我正在阅读以下程序来阅读测试文件
public static string[] method1()
{
//List<string[]> allLines = new List<string[]>();
TextReader tr = new StreamReader("data.txt");
// write a line of text to the file
string word = tr.ReadLine();
//now split this line into words
string[] val = word.Split(new Char[] { ',' });
//Console.WriteLine(val[0]);
//Console.WriteLine(val[1]);
//Console.ReadLine();
return val;
}
public static void method2()
{
method1();
var value1= val[0];
//Console.WriteLine(val[0]);
}
显示错误,当前上下文中不存在名称“val”。如何解决这个问题?
答案 0 :(得分:2)
您没有将方法的返回值分配给var
var val = method1();
然后你可以这样做:
if(val.Length > 0)
var value1= val[0];
您还可以改进您的方法:
public static string[] method1()
{
//...Textreader lines and then
return word.Split(','); // no need to use new Char[] as , is already a single character
}
答案 1 :(得分:0)
您没有正确分配变量val,请参阅下面如何正确使用
public static void method2()
{
var val = method1();
var value1= val[0];
Console.WriteLine(value1);
我建议您检查val.Length是否为&gt;使用前使用0 [0]
但是如果你确信从method1返回了string []的长度 将永远有[0]索引,你只想使用 [0]从而不是为什么不使用更短的语法
喜欢这样:
Console.WriteLine(method1()[0]);
答案 2 :(得分:0)
您尚未在方法2中定义val。尝试:
public static void method2()
{
var val = method1();
var value1= val[0];
//Console.WriteLine(val[0]);
}
答案 3 :(得分:0)
您需要从方法1返回结果:
public static string[] method1()
{
//List<string[]> allLines = new List<string[]>();
TextReader tr = new StreamReader("data.txt");
// write a line of text to the file
string word = tr.ReadLine();
//now split this line into words
string[] val = word.Split(new Char[] { ',' });
//Console.WriteLine(val[0]);
//Console.WriteLine(val[1]);
//Console.ReadLine();
return val;
}
public static void method2()
{
var value1 = method1();
Console.WriteLine(value1.First());
//Console.WriteLine(val[0]);
}
答案 4 :(得分:0)
从method2
的角度来看,method1
是:
public static string[] method1()
就是这样。 method1中的所有其他代码都是未知的。它不了解tr
,word
或val
。它不知道你是否改变了它们(这是为什么method2
的这种无知是好事的几个原因之一)。唯一method2
“知道”的是method1
是静态的,接受零参数,并返回一个字符串数组。
因此你需要对回报做点什么。您可以将其存储在变量中,该变量可以称为val
或其他内容。
public static void method2()
{
var val = method1();
var value1= val[0];
Console.WriteLine(val[0]);
}
或同样地:
public static void method2()
{
var imBoredOfTheNameVal = method1();
var value1= imBoredOfTheNameVal[0];
Console.WriteLine(imBoredOfTheNameVal[0]);
}
两者完全相同。
您也可以直接对返回的值执行操作:
public static void method2()
{
Console.WriteLine(method1()[0]);
}