簡體   English   中英

C#是否需要有關方法訪問的幫助?

[英]C# need help for method access?

我正在使用以下程序讀取測試文件

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

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
    }

您沒有正確分配變量val,請參見下面的如何正確使用它

public static void method2()
{
       var val = method1();
        var value1= val[0];
      Console.WriteLine(value1);

我建議您在與[0]一起使用之前檢查val.Length是否> 0

但是,如果您確信從method1返回的字符串[]的長度將始終具有[0]索引,並且只想使用其中的[0],那么為什么不使用更短的語法

像這樣:

Console.WriteLine(method1()[0]);

您尚未在method2中定義val。 嘗試:

公共靜態void method2()

{ 
 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]);
    }

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]);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM