我有两个SqlServer.Smo.Column
类型的对象。如果我尝试比较两者的一个属性
ColumnaOrigen.Properties["DataType"].Value != ColumnaDestino.Properties["DataType"].Value
即使两个值均为true
,也会返回numeric
。
在调试器中,显示的类型是object{string}
;与object{bool}
为什么会这样?
如何比较这些值以获得正确答案?
答案 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))
{ }