Как получить доступ к переменной за пределами foreach (C #) - PullRequest
0 голосов
/ 06 июля 2011

Я пытаюсь получить переменный результат из foreach в моем основном методе. Код выглядит так:

    static void Main(string[] args)
    {

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

Как вы можете видеть, он возвращает ошибку, потому что я не могу получить доступ к переменной за пределами foreach. Как мне получить к нему доступ?

Ответы [ 7 ]

5 голосов
/ 06 июля 2011

Я не могу понять, чего вы хотите достичь ... но код должен быть таким:

 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 голос
/ 06 июля 2011

Ваш код неверен по логике. Вы перебираете некоторые строки, присваиваете их переменной, затем ничего не делаете , а затем присваиваете следующую строку новой переменной (каждый раз, когда цикл получает другую строку, создается другая переменная с именем result), и т. д.

Это можно считать логическим кодом:

string names = string.Empty;
foreach (string name in namesList)
{
    names += ", " + name;
}
console.WriteLine(names);
0 голосов
/ 06 июля 2011

Объявление результата строки вне цикла foreach

string result = "" ;

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

.... и т. Д.

0 голосов
/ 06 июля 2011

Variables можно получить с помощью scope.Поэтому, если вы хотите получить доступ к переменной за пределами foreach loop, объявите ее вне цикла.

string result = string.Empty;

foreach (string s in lines)         
{              
   result = s;         
} 
0 голосов
/ 06 июля 2011

Область действия любой переменной, объявленной в цикле foreach, ограничена самим циклом. К нему нельзя получить доступ за пределами цикла. Как уже упоминалось @danyolgiax, объявите переменную вне цикла. Тогда вы сможете получить к нему доступ.

0 голосов
/ 06 июля 2011

вам нужно объявить переменную вне фигурных скобок {}, чтобы использовать ее вне

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 голосов
/ 06 июля 2011

в случае, если вы хотите получить только текущее значение, как указано выше, код в порядке, но если вы хотите получить строку, напишите

    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);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...