2011-07-06 8 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

누가 이것을 downvote했고 그 이유는 무엇입니까? – 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

Variablesscope에서 액세스 할 수 있습니다. 따라서 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 또는 데이터 샘플을 게시하는 경우 ** 텍스트 편집기에서 해당 행을 강조 표시하고 편집기 툴바의 "코드 샘플"버튼 ('{}) '을 클릭하십시오. 형식 및 구문을 강조 표시하십시오! –

관련 문제