无法将来自 COM 对象的字符串与字符串文字进行比较
Can´t compare string from COM-object with string-literal
我有以下代码来比较从数据库读取的值与一些预期值:
object o = row.get_Value(fieldIndex);
bool equal = o == "mytext";
当我调试时 o
的值为 "mytext"
。然而,比较结果是 false
。另一方面,如果我将 o
转换为 string
,比较有效:
bool equal = (string)o == "mytext";
虽然 row
是一个 COM 对象,但 o.GetType()
returns string
.
很遗憾,我无法提供 get_Value
的功能,因为我没有它的源代码。
那么为什么第二次比较有效而第一次比较无效?
最小的可重现示例是
object o = "mymy";
string s = "my";
Console.WriteLine(o == s+s);
这会给你编译器警告 CS0252,它基本上是说你得到 object
的相等比较而不是 string
.
的相等比较
string
改变了 ==
to that of .Equals()
的含义,它测试一个字符一个字符是否相等。
我有以下代码来比较从数据库读取的值与一些预期值:
object o = row.get_Value(fieldIndex);
bool equal = o == "mytext";
当我调试时 o
的值为 "mytext"
。然而,比较结果是 false
。另一方面,如果我将 o
转换为 string
,比较有效:
bool equal = (string)o == "mytext";
虽然 row
是一个 COM 对象,但 o.GetType()
returns string
.
很遗憾,我无法提供 get_Value
的功能,因为我没有它的源代码。
那么为什么第二次比较有效而第一次比较无效?
最小的可重现示例是
object o = "mymy";
string s = "my";
Console.WriteLine(o == s+s);
这会给你编译器警告 CS0252,它基本上是说你得到 object
的相等比较而不是 string
.
string
改变了 ==
to that of .Equals()
的含义,它测试一个字符一个字符是否相等。