首页 > 解决方案 > 无法将 COM 对象中的字符串与字符串文字进行比较

问题描述

我有以下代码,以便将从数据库读取的值与一些预期值进行比较:

object o = row.get_Value(fieldIndex);
bool equal = o == "mytext";

当我调试o具有值的"mytext". 然而比较结果false。另一方面,如果我o转换为string,则比较有效:

bool equal = (string)o == "mytext";

Whilerow是一个 COM 对象,o.GetType()返回string.

不幸的是,我不能提供什么get_Value,因为我没有它的源代码。

那么为什么第二个比较有效而第一个无效呢?

标签: c#com

解决方案


最小的可重现示例是

object o = "mymy";
string s = "my";
Console.WriteLine(o == s+s);

这会给你编译器警告CS0252,它基本上说你得到的是相等比较,object而不是相等比较string

string==将of.Equals()的含义更改为 of 的含义,这会逐个字符地测试是否相等。


推荐阅读