字符串在当前上下文中不存在 - C#

时间:2011-08-10 08:36:20

标签: c# .net windows

由于某些原因,我的字符串:“firstline”没有在另一种方法中被选中。这背后的原因是什么?

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 个答案:

答案 0 :(得分:2)

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 :(得分:1)

您正在创建局部变量,而只是分配您已有的全局变量:

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

答案 2 :(得分:0)

在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;