2
我正在使用一些運行SQL查詢作爲參考的舊代碼。c#Object obj的值是{}。什麼是 」{}」?
在某些時候,它得到的東西,如:
sqlDataAdapter.Fill(dataSet);
DataRow dataRow = dataSet.Tables[0].Rows[0];
Object obj = dataRow[fieldName];
舊代碼所做的:
string output;
if (!string.IsNullOrEmpty(obj.ToString())) { output = obj.ToString(); }
else { output = "Not Available"; }
我改變他們:
output = obj as string ?? "Not Available"
但有時,它打破了。正如我所懷疑的那樣,當參賽作品是int
時,情況正在發生中斷。在這些案例中作爲int
投射解決了這個問題。
然後當int類型爲沒有條目爲obj[fieldName]
時出現另一個問題。當我通過調試器時,驚奇地發現obj
不是null
。在VS中,鼠標懸停顯示它的值爲{}
。
到底是什麼{}
?我如何對它進行布爾測試?
(在舊的代碼,它出現在這種情況下返回.ToString()
和""
按預期方式工作。)
而且'obj == Object.Empty'測試沒有'Object.Empty'嗎?或者我可以創建一個'Object comparableEmpty = new Object()'? – Kache 2010-10-20 22:00:28
不,因爲'Object'是一個引用類型,這意味着如果它存在,比較Object.Empty到你自己的對象將永遠是錯誤的。您可以使用'myObj.GetType().GetProperties()。Count == 0'或其一些變體,儘管開銷可能不值得。 – 2010-10-20 22:03:22
感覺有點愚蠢如何沒有一個優雅的解決方案。如果它是一個引用類型,引用應該只是'null',就像一個很好的引用。 – Kache 2010-10-20 22:06:38