在 C# 中测试 DataColumn 值的相等性
我编写了一些代码来在列类型未知时测试 DataTables 中的列值之间的相等性。
像这样直接测试:
row["Foo"] == row["Bar"]
总是结果为 false,大概是因为对象的 Equals 实现使用了 ReferenceEquals。
所以我采取了:
row["Foo"].ToString() == row["Bar"].ToString()
这有效(至少对于我到目前为止遇到的情况),但它看起来有点,嗯,manky。
谁能想到我不应该这样做的原因,或者提出更好的方法?请记住,我在设计时不知道列类型,因此不能选择转换。
谢谢
大卫
I've written some code to test equality between column values in DataTables when the column type isn't known.
Testing directly like this:
row["Foo"] == row["Bar"]
always results in false, presumably because object's implementation of Equals uses ReferenceEquals.
So I've resorted to:
row["Foo"].ToString() == row["Bar"].ToString()
This works (at least for the cases I've encountered so far), but it seems a little, well, manky.
Can anyone think of a reason I shouldn't do it this way, or suggest a better way? Remember I don't know the column types at design time, so casting is not an option.
Thanks
David
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
尝试
row["Foo"].Equals(row["bar"])
。当您使用 == 比较对象并且没有预定义或用户定义的 == 运算符时,C# 将使用引用相等来比较它们。如果要调用Equals方法,需要将其写成方法调用。
Try
row["Foo"].Equals(row["bar"])
.When you compare objects using == and there is no predefined or user-defined == operator, C# will compare them using reference equality. If you want to call the Equals method, you need to write it out as a method call.
row["Foo"].Equals(row["Bar"])
?row["Foo"].Equals(row["Bar"])
?如果它们是字符串,为什么不使用 Equals。
why not use Equals if they are string.