当列类型未知时,我编写了一些代码来测试DataTables中列值之间的相等性。
直接测试:
row["Foo"] == row["Bar"]
总是导致错误,大概是因为对象的Equals实现使用了ReferenceEquals。
所以我采取了:
row["Foo"].ToString() == row["Bar"].ToString()
这是有效的(至少对于我到目前为止遇到的情况而言),但它看起来有点,很好,很奇怪。
任何人都可以想到我不应该这样做的原因,或者建议一个更好的方法吗?请记住,我不知道设计时的列类型,因此不能选择转换。
由于
大卫
答案 0 :(得分:3)
试试row["Foo"].Equals(row["bar"])
。
使用==比较对象并且没有预定义或用户定义的==运算符时,C#将使用引用相等性对它们进行比较。如果要调用Equals方法,则需要将其作为方法调用写出来。
答案 1 :(得分:1)
row["Foo"].Equals(row["Bar"])
?
答案 2 :(得分:1)
如果它们是字符串,为什么不使用Equals。
row["foo"].ToString().Equals(row["Bar"].ToString());