好吧,我感到很慚愧問這個問題,但我不明白爲什麼這個代碼在C#中不VS2010快遞編譯:問題在C#中未分配的局部變量
string[] value;
for (int i = 0; i < 3; i++)
{
value[i] = "";
}
爲什麼它說,它未分配?
好吧,我感到很慚愧問這個問題,但我不明白爲什麼這個代碼在C#中不VS2010快遞編譯:問題在C#中未分配的局部變量
string[] value;
for (int i = 0; i < 3; i++)
{
value[i] = "";
}
爲什麼它說,它未分配?
您需要先分配數組,然後再分配數組中的項。
string[] value = new string[3];
如果你想動態地添加項目,並根據需要調整它,你可能會更好使用通用列表,例如。
var values = new List<string>();
for(int i = 0; i < 3; i++)
{
values.Add(""); // or values.Add(String.Empty);
}
克里斯的已經回答了,我想補充一點,你通常希望做到以下幾點:
string[] value = new string[3];
for (int i=0; i<value.Length; i++)
{
value[i]="";
}
+1!也謝謝!其實我這樣做:string [] value = new string [maxarray]; for(int i = 0; i
被做:1)使用value.Length更清晰,然後一些硬編碼值(或另一個變量應該保持長度(但可能不會在以後的時間由於代碼更改)2)我不確定是否仍然是這種情況,但上次我檢查JIT是更好地優化此代碼時,該變量檢查value.Length而不是其他一些參數。這是因爲這被認爲是一種模式,其中變量不能超出數組範圍,所以數組訪問不需要範圍檢查。 – Grizzly 2011-04-03 16:18:38
謝謝!我忘了怎麼做:( – 2011-04-03 15:59:59