c# 对象比较失败
本文关键字:失败 比较 对象 | 更新日期: 2023-09-27 18:31:47
>我有两个类型为 SqlServer.Smo.Column
的对象。如果我尝试比较两者的一个属性
ColumnaOrigen.Properties["DataType"].Value != ColumnaDestino.Properties["DataType"].Value
它返回true
即使两个值都numeric
。
在调试器中,显示的类型是object{string}
;其他数据类型(如object{bool}
为什么会这样?
如何比较这些值以获得正确答案?
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))
{ }