C# C方法访问需要帮助吗?
我有以下程序来读取测试文件C# C方法访问需要帮助吗?,c#,function,return,C#,Function,Return,我有以下程序来读取测试文件 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 s
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”在当前上下文中不存在。如何解决这个问题 您没有将该方法的返回值分配给您的var 然后你可以做:
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
}
您没有正确分配变量val请参见下面的如何正确使用它
public static void method2()
{
var val = method1();
var value1= val[0];
Console.WriteLine(value1);
我建议您先检查val.Length是否大于0,然后再将其与一起使用
[0]
但如果您确信字符串[]的长度是从method1返回的
将始终具有[0]索引,而您只想使用
[0]为什么不使用更短的语法呢
像这样:
您尚未在方法2中定义val。尝试: 公共静态无效方法2
{
var val = method1();
var value1= val[0];
//Console.WriteLine(val[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]);
}
从方法2的角度来看,方法1是:
就这样。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]);
}
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]);
}