2016-04-19 14 views
1

ギザギザの配列があり、それはmainで正常に動作しますが、メソッドに入れようとすると何を呼び出すべきかわかりません。私はload(data)とリターンステートメントを試したが、私は運がなかった。メソッド呼び出しからギザギザの配列を取得する

public static void load() 
{ 
    try 
    { 
     string[][] data = new[] { 
      File.ReadAllLines(@"data\Month.txt"), 
      File.ReadAllLines(@"data\Year.txt"), 
      File.ReadAllLines(@"data\WS1_AF.txt"), 
      File.ReadAllLines(@"data\WS1_Rain.txt"), 
      File.ReadAllLines(@"data\WS1_Sun.txt"), 
      File.ReadAllLines(@"data\WS1_TMin.txt"), 
      File.ReadAllLines(@"data\WS1_TMax.txt"), 
     }; 
     Console.WriteLine("Files have been found, press any key to continue"); 
     Console.ReadKey(); 
    } 
    catch (Exception) { 
     Console.WriteLine("Unable to find files... exiting"); 
     exit(); 
    } 
} 
+0

実際に何を達成しようとしていますか? –

+0

私はそのメソッドから別のメソッドに配列を取得しようとしています。他の方法の間で転送する – fegals

+0

はい、あなたの質問は分かりません。データを別のものに戻そうとしていますか?あなたのコードに 'public static string [] [] load()'と 'return data;'が必要です。そうでないと、あなたが何を求めているのかわからない –

答えて

1

メソッドから配列を返すだけで、loadメソッドの戻り値の型を、返す配列と同じ型に変更してください(何も返さないことを意味します)。また、それは、より高いレベルでの例外を処理するためのより良い考えです:

public static string[][] load() 
{ 
    string[][] data = new[] 
    { 
     File.ReadAllLines(@"data\Month.txt"), 
     File.ReadAllLines(@"data\Year.txt"), 
     File.ReadAllLines(@"data\WS1_AF.txt"), 
     File.ReadAllLines(@"data\WS1_Rain.txt"), 
     File.ReadAllLines(@"data\WS1_Sun.txt"), 
     File.ReadAllLines(@"data\WS1_TMin.txt"), 
     File.ReadAllLines(@"data\WS1_TMax.txt"), 
    }; 

    return data; 
} 

public static void test() 
{ 
    try 
    { 
     var data = load(); 

     Console.WriteLine("Files have been found, press any key to continue"); 
     Console.ReadKey(); 
    } 
    catch (Exception) 
    { 
     Console.WriteLine("Unable to find files... exiting"); 
     exit(); 
    } 
} 
0

あなたの署名をvoidから、あなたが返すと予想している戻り値の型に更新し、配列を返します。

public static string[][] load() 
{ 
    try 
    { 
     string[][] data = new[] 
     { 
      File.ReadAllLines(@"data\Month.txt"), 
      File.ReadAllLines(@"data\Year.txt"), 
      File.ReadAllLines(@"data\WS1_AF.txt"), 
      File.ReadAllLines(@"data\WS1_Rain.txt"), 
      File.ReadAllLines(@"data\WS1_Sun.txt"), 
      File.ReadAllLines(@"data\WS1_TMin.txt"), 
      File.ReadAllLines(@"data\WS1_TMax.txt"), 
     }; 
     Console.WriteLine("Files have been found, press any key to continue"); 
     Console.ReadKey(); 

     return data; 
    } 
    catch (Exception) 
    { 
     Console.WriteLine("Unable to find files... exiting"); 
     return null; 
    } 
} 

キャッチブロックから何かを返さなければならないことに注意してください。キャッチブロックから何かを返す必要があります。例外を再スローしないからです。この場合、nullを返します。

0

class Program 
{ 
    public static string[][] ReadFiles(string folder, params string[] files) 
    { 
     return files.Select((fn) => File.ReadAllLines(Path.Combine(folder, fn))).ToArray(); 
    } 

    static void Main(string[] args) 
    { 

     var data = ReadFiles(@"data", 
      "Month.txt", 
      "Year.txt", 
      "WS1_AF.txt", 
      "WS1_Rain.txt", 
      "WS1_Sun.txt", 
      "WS1_TMin.txt", 
      "WS1_TMax.txt"); 
    } 
} 

もパスとファイル名の配列を持つ多くのモジュラーアプローチを考えてみましょ付録

ないにも試してみてください任意の絶対パスをハードコードしますが、特殊なフォルダの列挙を使用します。例:

var folder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 
関連する問題