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. 为什么会这样?

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

c# 对象比较失败

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