![](/img/trans.png)
[英]What's the difference between obj1.Equals(obj2) and static Object.Equals(obj1, obj2) in c#?
[英]c# Object obj's value is {}. What is “{}”?
我正在使用一些運行sql查詢的舊代碼作為參考。
在某種程度上,它達到了以下目的:
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
解決該問題。
entry for obj[fieldName]
of type int. 然后,當 int類型的obj[fieldName]
條目時,又出現了另一個問題。 當我逐步通過調試器時,我驚訝地發現obj
不是null
。 在VS中,鼠標懸停顯示它具有值{}
。
{}
到底是什么? 我如何對其進行布爾測試?
(在舊代碼中,出現了.ToString()
在這種情況下返回""
並按預期工作。)
{
和}
是左括號和右括號,並表示對象的開始和結束。 因此,沒有特殊屬性的空對象的簡稱為{}
。 調試器使用此表示法幫助您直觀地區分空對象,空字符串和null。
如果將鼠標懸停在obj[fieldName]
並且沒有fieldName
條目,則調試器將不會在意它,它將顯示obj
的值。 您必須使用即時窗口或手表/快速手表。 調試器只會看到您將鼠標懸停在obj上,並假定您是在引用數組本身,而不是指向指定索引的數組內容。
萬一有人再次遇到這個問題。
如果在調試模式下顯示val對象{}的解決方案
// Check if its not null or empty
if (!IsNullOrEmpty(val.ToString().ToArray()))
{
// Do something with val
dt.Rows.Add(val);
}
public static bool IsNullOrEmpty<T>(T[] array)
{
return array == null || array.Length == 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.