您的問題雖然有效,但缺少對您要完成的任務的解釋。既然你只問過空檢查,我的答案只關注在您的代碼片段中執行的空檢查。
有幾件事情需要此話你的代碼,我認爲這將有助於你瞭解情況更好。
String Temp = TempDayValues[j].Trim();
有趣的是,您已經對該字符串調用了.Trim()
。如果TempDayValues[j]
爲空,則會引發異常。您不能對空值調用方法(您也無法訪問空值上的屬性和字段)。
如果您的應用程序沒有拋出異常;我認爲這不是你沒有提到過的;那麼你已經隱含地已經「證明」你的字符串不爲空。因爲你會得到一個例外,否則。
另外請注意,.Trim()
不會讓一些空。由於您只是在檢查TempDayValues[j]
是否爲空(並可能覆蓋該值,但從未使用的值爲)感興趣;爲了空檢查的目的,使用.Trim()
在功能上無關緊要。
假設爲解釋的其餘部分,它是可能的您的字符串爲空;即使.Trim()
已經使你的例子不可能。
if (string.IsNullOrEmpty(Temp))
{
Console.WriteLine("Found Null");
TempDayValues[j] = TempDayValues[j - 1];
}
你如果,如果你的字符串爲null,而且如果是空塊將被執行。畢竟,你是調用方法string.IsNull 或空()。一個空字符串是一個不爲空的字符串,但也不包含任何字符。
所以更正確的信息將是「發現空或空字符串」。
if(Temp == null)
{
//code here
}
雖然這是檢查空的有效方法;如果您的字符串爲空,則if塊不會執行。這可能是你正在尋找的。在大多數情況下,我希望String.IsNullOrEmpty()
更適合;但我不知道你的代碼的具體目的。
在這裏,說「你找到空」而不是空字符串是正確的。
這就是說;這個問題的答案是什麼?
這不容易回答;因爲你沒有解釋代碼段的意圖。我將提供一個代碼改進,這是我可以給你最好的,沒有更多的信息。
string Temp = TempDayValues[j];
if (string.IsNullOrEmpty(Temp)) //use Temp == null here if you don't want it to trigger on empty strings.
{
Console.WriteLine("Found Null or empty string");
TempDayValues[j] = TempDayValues[j - 1];
}
編輯如果您還需要這個,如果因爲你的字符串不爲空,不爲空的情況下要執行塊,但它僅包含空格;那麼請致電.Trim()
。在這種情況下,改變你如果塊:
if (string.IsNullOrEmpty(Temp) || string.IsNullOrEmpty(Temp.Trim()))
如果溫度爲空,只有左操作將被執行(因爲它使評價結果true
無論右操作數)。
僅當您的字符串不爲空或爲空時,纔會執行右操作數。在這種情況下,它允許您檢查僅包含空白字符的字符串。
如果你設法在沒有'NullReference'的字符串上執行'.Trim()',那麼你的字符串不是null。也許你正在尋找'IsNullOrWhiteSpace' - 爲空的空白空白? –
實際上,如果[j]後面的值爲空,第一行應該拋出一個NullReferenceException。因爲你正在調用'.Trim'的空值。如果它沒有拋出任何異常,那麼[j]後面的值顯然不爲空。 – ckruczek
這不能既不是空字符串也不是空字符串。如果你在一個空字符串上調用Trim,你會得到一個異常。而string.IsNullOrEmpty是檢查這種情況的正確方法。所以在這裏工作有些不同。使用調試器檢查Temp的值是什麼 – Steve