2012-08-31 59 views
-1

我在閱讀測試文件C#需要方法訪問的幫助嗎?

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

IT方面顯示錯誤「VAL」並不在當前的背景下存在的名字下面的程序。如何解決這個問題?

回答

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 
    } 
0

你沒有正確指定變量val,請看下面如何正確使用它

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

我建議你檢查是否val.Length> 0使用它與 [0]

但是,如果你有信心,從方法1返回字符串的長度是[] 總會有前[0]索引,你只是想使用 [0]比爲什麼不使用更短的語法

像這樣:

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

感謝所有的工作:-) – 1630082

0

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

公共靜態無效的方法2()

{ 
var val = method1(); 
    var value1= val[0]; 
    //Console.WriteLine(val[0]); 

}

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