c#对象比较失败

时间:2014-11-24 13:51:12

标签: c#

我有两个SqlServer.Smo.Column类型的对象。如果我尝试比较两者的一个属性

ColumnaOrigen.Properties["DataType"].Value != ColumnaDestino.Properties["DataType"].Value

即使两个值均为true,也会返回numeric

在调试器中,显示的类型是object{string};与object{bool}

等其他数据类型相同
  1. 为什么会这样?

  2. 如何比较这些值以获得正确答案?

1 个答案:

答案 0 :(得分:4)

  

1-为什么会这样?

因为您没有比较变量的值,而是它们的引用。由于两个变量均为object==调用Object.ReferenceEquals

  

2-如何比较这些值以获得正确答案?

如果两种类型都是string,则将它们投射并将它们作为字符串进行比较。

string a = ColumnaOrigen.Properties["DataType"].Value as string;
string b = ColumnaDestino.Properties["DataType"].Value as string;

if (!string.Equals(a, b))
{ }