1

当列类型未知时,我编写了一些代码来测试 DataTables 中列值之间的相等性。

像这样直接测试:

row["Foo"] == row["Bar"]

总是导致 false,大概是因为对象的 Equals 实现使用了 ReferenceEquals。

所以我采取了:

row["Foo"].ToString() == row["Bar"].ToString()

这有效(至少对于我迄今为止遇到的情况),但它似乎有点,嗯,manky。

谁能想到我不应该这样做的原因,或者提出更好的方法?请记住,我在设计时不知道列类型,因此不能选择强制转换。

谢谢

大卫

4

3 回答 3

3

试试row["Foo"].Equals(row["bar"])

当您使用 == 比较对象并且没有预定义或用户定义的 == 运算符时,C# 将使用引用相等来比较它们。如果要调用 Equals 方法,则需要将其写为方法调用。

于 2010-06-25T13:30:39.733 回答
1

row["Foo"].Equals(row["Bar"])?

于 2010-06-25T13:29:56.970 回答
1

如果它们是字符串,为什么不使用 Equals。

row["foo"].ToString().Equals(row["Bar"].ToString());
于 2010-06-25T13:32:45.063 回答