c# - 无法将 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
,因为我没有它的源代码。
那么为什么第二个比较有效而第一个无效呢?
解决方案
最小的可重现示例是
object o = "mymy";
string s = "my";
Console.WriteLine(o == s+s);
这会给你编译器警告CS0252,它基本上说你得到的是相等比较,object
而不是相等比较string
。
string
==
将of.Equals()
的含义更改为 of 的含义,这会逐个字符地测试是否相等。
推荐阅读
- swift - ARCHS,缺少存档中间构建文件并且无法部署到真实设备上
- couchbase - 如何在 Couchbase 中创建分层视图
- python - 在python中查找子字符串的两个字符串列表之间的比较
- amazon-web-services - 删除 S3 中无意创建的对象版本
- javascript - 我可以将变量从我的 javascript 传递到 jsp 文件吗?
- swift - 如何在 SwiftUI 中将视图属性绑定到 ViewModel 属性
- xml - 如何在 Odoo 中使用 Wkhtmltopdf 打印尺寸准确的 div?
- php - 为数据库中的每个项目制作产品卡片
- extjs3 - FormPanel 折叠后 HTML 编辑器不可编辑
- reactjs - 使用带有 useState 的 double 类型并根据类型进行分配