[英]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中的所有其他代碼對其均未知。 它不知道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]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.