C# 从方法调用中获取交错数组
本文关键字:数组 获取 方法 调用 | 更新日期: 2024-10-25 01:14:23
我有一个锯齿状数组,它在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();
}
}
只需从该方法返回数组,并将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();
}
}
将签名从 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
。
还考虑使用路径和文件名数组的更模块化的方法
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);