Строка не существует в текущем контексте - C # - PullRequest
2 голосов
/ 10 августа 2011

По какой-то причине моя строка: "первая строка" не берется другим методом.В чем причина этого?

public static void test1()
{
..
            string[] linesw = obj1.ReadToEnd().Split(new char[] { '\n' });
            string firstline = linesw[1]; 
..
}

public static void test2()
{
..
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(firstline);
..
}

Ответы [ 3 ]

2 голосов
/ 10 августа 2011

firstline является локальной переменной и выходит из области видимости при использовании в другом методе. Продвигайте его как переменную класса или как параметр.

как переменная класса:

private static string firstline = String.Empty; // class variable

public static void test1()
{
..
    string[] linesw = obj1.ReadToEnd().Split(new char[] { '\n' });
    firstline = linesw[1]; 
..
}

public static void test2()
{
..
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(firstline);
..
}

Или как параметр при вызове test2() из test1():

public static void test1()
{
..
    string[] linesw = obj1.ReadToEnd().Split(new char[] { '\n' });
    string firstline = linesw[1]; 
    test2(firstline);
..
}

public static void test2(string firstline)...
1 голос
/ 10 августа 2011

Вы создаете локальную переменную, вместо этого просто назначьте глобальную переменную, которая у вас уже есть:

string[] linesw = obj1.ReadToEnd().Split(new char[] { '\n' });
firstline = linesw[1]; 
0 голосов
/ 10 августа 2011

В c #, когда вы определяете переменную в методе, вы можете получить к ней доступ только в методе определения. Другими словами, область видимости переменной является определяющим блоком, например:

    private void test()
    {


    int i = 0;
      //defining sub block
      {
            i++; // i is accessible in sub blocks.
            int j = 0;
      }
    //ERROR : j is defined in the sub block, sub block is finished so it's out of scope
      j++; 

    }

Ваше решение - определить вашу переменную на более высоком уровне. Как на уровне класса Вы должны определить свою переменную как статическую.

private static  string firstline;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...