{
string nom;
string ou;
nom = "1";
if (nom == "1")
{
nom +=1;
ou = nom;
}
Console.Write(ou);
}
小問題,但我不能打印OU值我不知道爲什麼
{
string nom;
string ou;
nom = "1";
if (nom == "1")
{
nom +=1;
ou = nom;
}
Console.Write(ou);
}
小問題,但我不能打印OU值我不知道爲什麼
另一種選擇是設置OU在其他:
if (nom == "1")
{
nom +=1;
ou = nom;
} else
{
ou = "blank value";
}
C#編譯器要求在使用前一定初始化的變量。
定義初始化是編譯時的事情,它不考慮變量的運行時值。
但是,如果變量nom
被明確definied爲const
,編譯器會確保它不會在運行時更改和if
語句塊將運行和可變ou
將被明確指定。
嘗試這樣的事情
{
string nom;
string ou = String.Empty;
nom = "1";
if (nom == "1")
{
nom +=1;
ou = nom;
}
Console.Write(ou);
}
這是因爲OU是未分配的,如果塊的範圍之外。將聲明行更改爲string ou = string.Empty;
,並將其工作。
這段代碼甚至不會編譯,更不用說打印ou
。 C#強制所有變量在訪問之前進行初始化,在您的情況中並非總是如此。從而改變
string ou;
來,說:
string ou = "";
會做得很好。
對於誰低估了這一點:你完全同意嗎? – 2009-02-25 13:53:31
我沒有downvote它,但我的問題是=「」,它應該是= String.Empty主要是爲了可讀性的原因。 – Alex 2009-05-04 19:54:48
嘗試用
string ou = null;
問題代替第二線是,如果NOM證明不是等於「1」,則變量OU不會已被初始化。這裏的編譯器想要保證你已經分配了一個值。
這是甚至編譯?
nom
是string
- 你怎麼辦nom += 1
?
不是在我看來,一個能說會道的問題。代碼很奇怪,沒有解釋 - 爲什麼字符串中的「x + = 1」? – dbkk 2009-06-23 13:45:29