繁体   English   中英

C#对象比较失败

[英]c# Object Comparison fails

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

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

即使两个值都是numeric它也会返回true

在调试器中,显示的类型是object{string} 其他数据类型(例如object{bool}

  1. 为什么会这样?

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

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))
{ }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM