2011-12-22 28 views
1

我想初始化一個數組 - 我不知道它有多大。然後將其設置在一個條件在if語句中設置變量,然後告訴它未分配

所以我有:

string[] my_string; 

if(x==2) 
{ 
my_string=File.ReadAllLines("file.txt"); 
} 

string new_string=my_string[1]; 

它告訴我,我已經一個未分配的局部變量,因爲它是在狀態。我如何解決這個問題?

+4

如果'x == 3',你期望'my_string [1]'是什麼? – SLaks 2011-12-22 18:02:27

+0

沒錯。我想我只需要將所有其他代碼放在條件中。 – marseilles84 2011-12-22 18:14:03

回答

0

爲什麼不創建一個列表,而不是再利用File.ReadAllLines(「file.txt的」) 也包括你一起file.txt的 這裏是一個免費的代碼片段供您使用的文件路徑我用這個了很多,當我想一個文本文件加載到一個列表作爲一個批量加載...

List<string> lstLinesFromFile = new List<string>(File.ReadAllLines(yourFilePath+ "file.txt")); 

從那裏你可以在調試器中查看或快速監視添加到lstLinesFromFile和看到所有已加載文本。從那裏的每一行都將被訪問鏈接序號,因此使用for循環或foreach循環

4

如果x不是2,您需要確保它有一個值。

2

此刻,如果x不等於2,那麼你的數組中沒有任何值,但是仍然調用該數組。你可以做的一件事是將new_string assingment移動到if statement之內。當然,如果您有其他值得您檢查的x,這可能不是最好的方法。如果是這樣,Switch..Case可能會更好。

string[] my_string; 
//set new_string to be empty for now 
string new_string = String.Empty; 

if(x==2) 
{ 
    my_string=File.ReadAllLines("file.txt"); 
    //Make sure there are at least two elements 
    if(my_string.Length >= 2)  
    //Get the second element of the array (remember, 0 is the first element) 
     new_string = my_string[1]; 
} 
+0

還應檢查'my_string'是否包含至少2個元素,否則它將訪問出界。 – ChrisWue 2011-12-22 18:08:59

+0

我認爲這個例子中的文本中有足夠的行,但你是對的。更新 :) – keyboardP 2011-12-22 18:12:35