我有一个锯齿状数组,它在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 :(得分:1)
只需从方法中返回您的数组,并将load
方法的返回类型更改为与您返回的数组相同的类型(void
表示您已经什么都不回来)。此外,更好的办法是处理更高级别的例外:
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();
}
}
答案 1 :(得分: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;
}
}
请注意,您必须从catch块返回一些内容,因为您不会重新抛出异常。在这种情况下,请返回null
。
答案 2 :(得分: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);