由于某些原因,我的字符串:“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);
..
}
答案 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;