2011-07-06 20 views
0

我試圖從我的主要方法中獲取foreach的變量結果。代碼如下所示:如何訪問foreach之外的變量(C#)

static void Main(string[] args) 
    { 

     ArrayList lines = GetLines("test.txt", "8394", true); 
     foreach (string s in lines) 
     { 
      string result = s; 
     } 
     Console.WriteLine(result); 
    } 

正如您所看到的,它返回一個錯誤,因爲我無法訪問foreach之外的變量。 我如何訪問它?

+1

您需要定義它的'foreach'外,如果要訪問它'外的foreach '...... –

+0

誰做了這個,爲什麼? – Exa

回答

5

我不明白你想達到什麼做的......但代碼應該是這樣的:

ArrayList lines = GetLines("test.txt", "8394", true); 
string result=string.Empty;  
foreach (string s in lines) 
     { 
      result = s; 
     } 
     Console.WriteLine(result); 

我想你想要做的是這樣的:如果

ArrayList lines = GetLines("test.txt", "8394", true); 

foreach (string s in lines) 
     { 
      Console.WriteLine(s); 
     } 
+1

當你只想顯示最後一個值時,迭代的意義是什麼? –

+0

非常感謝!我甚至把它作爲一個方法與該片段:) – Kraffs

+0

你非常歡迎! – danyolgiax

0

ü想要得到如上代碼只是當前值是確定的,但如果你想獲得行,你建議立即進行刪除寫

static void Main(string[] args) 
    { 
     string result = string.Empty; 
     ArrayList lines = GetLines("test.txt", "8394", true); 
     foreach (string s in lines) 
     { 
      result += s; 
     } 
     Console.WriteLine(result); 
    } 
1

你的代碼是錯誤的升ogically。通過循環某些行,將它們分配給一個變量,然後執行沒有任何操作,然後將下一行分配給新變量(每次循環獲取另一行時,另一個變量稱爲result),依此類推。

這也算是一個邏輯代碼:

string names = string.Empty; 
foreach (string name in namesList) 
{ 
    names += ", " + name; 
} 
console.WriteLine(names); 
+2

如果你這樣做,你應該總是使用'StringBuilder'而不是僅僅連接你的不可變字符串....否則,你拋出舊的字符串併爲每次迭代創建一個新的字符串實例 - **不**非常有效.... –

+0

好暗示@marc_s。我只是在演示:) –

0

需要聲明的括號以外的變量{}在室外使用

ArrayList lines = GetLines("test.txt", "8394", true); 
string result;  
foreach (string s in lines) 
     { 
      result = s; 
     } 
     Console.WriteLine(result); 

是顯而易見的答案,然而這代碼只會向控制檯寫出線陣列中最後一個參數/項目。

這一切都取決於你想要的東西,如果你想寫出行數組的所有內容,你可以在循環內寫入每一項的行。例如

ArrayList lines = GetLines("test.txt", "8394", true); 
string result;  
foreach (string s in lines) 
     { 
      result = s; 
      Console.WriteLine(result); 
     } 

會寫的每一項

0

foreach循環內聲明的任何變量的範圍僅限於該循環本身。它不能在循環外部訪問。正如@danyolgiax提到的,在循環之外聲明變量。然後你將能夠訪問它。

0

Variables可以通過scope訪問。因此,如果您想訪問foreach loop以外的變量,請在循環外聲明它。

string result = string.Empty; 

foreach (string s in lines)   
{    
    result = s;   
} 
0

foreach循環

string result = "" ; 

foreach (string name in namesList) 
{ 
    names += ", " + name; 
} 

外聲明字符串結果....等

+0

如果您發佈代碼,XML或數據樣本,請**在文本編輯器中突出顯示這些行,然後單擊編輯器工具欄上的「代碼示例」按鈕(「{}」)格式和語法突出顯示它! –