簡體   English   中英

c#對象obj的值為{}。 什么是 ”{}”?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM