C#需要方法访问的帮助吗?

时间:2012-08-31 09:58:18

标签: 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 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”。如何解决这个问题?

5 个答案:

答案 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中的所有其他代码都是未知的。它不了解trwordval。它不知道你是否改变了它们(这是为什么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]);
}