是否有可能或值得将数组发送到另一个方法 c#

Is it possible or worth sending an array to another method c#

在我的代码中有两个方法,一个是main方法,另一个是'MethodA'。在 main 方法中,我将执行所有显示方法 A 的其他功能。但是,在 MethodA 中,我试图将几个文件读入一个数组并将它们 return 到主要方法,以便可以使用它们。我要问的问题是:(我已经针对这个问题浓缩了我的主要方法,它确实包括其他不 link 的项目)

1:是否值得将文件读入数组?

2: 我应该只在主程序中使用 'ReadFiles' 而不是其他方法吗?

static void Main(string[] args) // THE MAIN INCLUDES MAINLY ONLY THE WRITELINES AND WHAT IS SEEN
        {
string value = MethodA();
           Console.WriteLine(value);

            Console.ReadKey();
        }

        public string[] MethodA() //FILE METHOD - READS IN THE FILES THEN RETURNS THEM TO MAIN METHOD
        {
            StreamReader dayFile = new StreamReader("c:..\Files\Day.txt"); StreamReader dateFile = new StreamReader("c:..\Files\Date.txt");
            StreamReader sh1Open = new StreamReader("c:..\Files\SH1_Open.txt"); StreamReader sh1Close = new StreamReader("c:..\Files\SH1_Close.txt");
            StreamReader sh1Volume = new StreamReader("c:..\Files\SH1_Volume.txt"); StreamReader sh1Diff = new StreamReader("c:..\Files\SH1_Diff.txt");
            StreamReader sh2Open = new StreamReader("c:..\Files\SH2_Open.txt"); StreamReader sh2Close = new StreamReader("c:..\Files\SH2_Close.txt");
            StreamReader sh2Volume = new StreamReader("c:..\Files\SH2_Volume.txt"); StreamReader sh2Diff = new StreamReader("c:..\Files\SH2_Diff.txt");

            string dayString = dayFile.ReadToEnd(); string dateString = dateFile.ReadToEnd(); string Sh1OpenString = sh1Open.ReadToEnd(); string Sh1CloseString = sh1Close.ReadToEnd();
            string Sh1VolumeString = sh1Volume.ReadToEnd(); string Sh1DiffString = sh1Diff.ReadToEnd(); string Sh2OpenString = sh2Open.ReadToEnd(); string Sh2CloseString = sh2Close.ReadToEnd();
            string Sh2VolumeString = sh2Volume.ReadToEnd(); string Sh2DiffString = sh2Diff.ReadToEnd();

            string[] fileArray = new string[] { dayString, dateString, Sh1OpenString, Sh1CloseString, Sh1VolumeString, Sh1DiffString, Sh2OpenString, Sh2CloseString, Sh2VolumeString, Sh2DiffString };
            return fileArray;
        }

这取决于文件是否趋向于相当小。如果它们有几千兆字节那么大,你就会遇到问题。在这种情况下,您应该改为尝试按顺序读取文件。

  public static IEnumerable<string> ReadLines(Stream stream)
  {
     using (var reader = new StreamReader(stream))
     {
        string line;
        while ((line = reader.ReadLine()) != null)
        {
           yield return line;
        }
     }
  }

顺便说一句:StreamReader 应始终与 "using" 关键字一起使用,否则它会使文件保持打开状态,直到垃圾收集器完成已超出范围的实例。

我认为把它们全部读完没问题 - 除非你知道这些文件是否很大。

我会这样做:

    public string[] MethodA()
    {
        var filenames = new []
        {
            "Date.txt",
            "Day.txt",
            "SH1_Close.txt",
            "SH1_Diff.txt",
            "SH1_Open.txt",
            "SH1_Volume.txt",
            "SH2_Close.txt",
            "SH2_Diff.txt",
            "SH2_Open.txt",
            "SH2_Volume.txt",
        };

        return
            filenames
                .Select(fn => File.ReadAllText("c:..\Files\" + fn))
                .ToArray();
    }