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

C# 从方法调用中获取交错数组

只需从该方法返回数组,并将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);
相关文章: