2014-11-24 136 views
0

我有兩個SqlServer.Smo.Column類型的對象。如果我嘗試比較兩種c#對象比較失敗

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

一個屬性它返回true甚至雙方的值numeric

在調試器中顯示的類型是object{string};與其他數據類型相同,如object{bool}

  1. 爲什麼會發生這種情況?

  2. 如何比較這些值以獲得正確答案?

+0

您是否嘗試過使用「Type.Equals」? http://msdn.microsoft.com/en-us/library/3ahwab82%28v=vs.110%29.aspx – 2014-11-24 13:54:42

+0

通常使用Equals-method完成等式測試。對於簡單的數據類型,比如'int','bool' ......你也可以使用'=='或'!='。對於字符串,我們使用一種彙集,據我所知,這就是爲什麼'1「==」1「'工作。 – HimBromBeere 2014-11-24 13:55:09

回答

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