我如何将代码从二维数组转换为列表

本文关键字:二维数组 转换 列表 代码 | 更新日期: 2023-09-27 18:11:01

我又发了一次,似乎找不到一个简单的方法来转换这个。我试图摆脱这种方法的二维数组,ExtractData和使用列表取代它,但我没有运气。你们能给我一些例子或想法吗?谢谢你。

private void ExtractData( DateTime dtmDay )
  {
     // set to selected date in MonthCalendar control
     int intChosenDay = dtmDay.Day;
     int intFileDay; // day of event from file
     int intLineNumbers; // counts lines to skip
     m_intNumberOfEvents = 0; // set number of events to 0
     // initialize StreamReader to read lines from file
     StreamReader objInput = 
        new StreamReader( "calendar.txt" );
     // read first line before entering loop
     string strLine = objInput.ReadLine();
     // loop through lines in file
     while ( objInput.Peek() > -1 &&
        m_intNumberOfEvents < 10 )
     {
        intFileDay = Int32.Parse( strLine ); // extract day
        // if event scheduled for specified day,
        // store information
        if ( intFileDay == intChosenDay )
        {
           m_strData[ m_intNumberOfEvents, 0 ] = strLine;
           m_strData[ m_intNumberOfEvents, 1 ] = 
              objInput.ReadLine();
           m_strData[ m_intNumberOfEvents, 2 ] = 
              objInput.ReadLine();
           m_strData[ m_intNumberOfEvents, 3 ] = 
              objInput.ReadLine();
           m_strData[ m_intNumberOfEvents, 4 ] = 
              objInput.ReadLine();
           m_intNumberOfEvents++;
        }
        else
        {
           // skip to next event in file
           for ( intLineNumbers = 0; intLineNumbers <= 3;
              intLineNumbers++ )
              strLine = objInput.ReadLine();
        }
        // read day of next event in file
        strLine = objInput.ReadLine();
     } // end while
  } // end method ExtractData

我如何将代码从二维数组转换为列表

所以你有一个可变数量的事件,每个事件有5"行"的文本,你希望单独存储?创建一个类来表示每个Events数据,并创建它们的列表。

public class EventData {
    public string Line1 { get; set; }
    public string Line2 { get; set; }
    public string Line3 { get; set; }
    public string Line4 { get; set; }
    public string Line5 { get; set; }
}
...
var results = new List<EventData>();
// loop through lines in file
 while ( objInput.Peek() > -1 &&
    m_intNumberOfEvents < 10 )
 {
    intFileDay = Int32.Parse( strLine ); // extract day
    // if event scheduled for specified day,
    // store information
    if ( intFileDay == intChosenDay )
    {
        var foo = new EventData();
        foo.Line1 = strLine;
        foo.Line2 = objInput.ReadLine();
        foo.Line3 = objInput.ReadLine();
        foo.Line4 = objInput.ReadLine();
        foo.Line5 = objInput.ReadLine();
        results.Add(foo);
        m_intNumberOfEvents++;
    }
    else
    {
       // skip to next event in file
       for ( intLineNumbers = 0; intLineNumbers <= 3;
          intLineNumbers++ )
          strLine = objInput.ReadLine();
    }
    // read day of next event in file
    strLine = objInput.ReadLine();
 } // end while

必须重复Dylan Smith说过的话;创建一个类

我不完全确定你想做什么,但看起来你想要每天发生的一系列事件。如果是这样,那么类确实是最有意义的。该类不仅可以存储这些字符串,还可以拥有越来越容易管理的数据(例如事件发生的时间)。

真的,如果你看到自己遇到这样的问题,你想要不止一个变量来保存一些关于某事的信息,创建一个类或结构。你以后会感谢自己的。

我明白在这种情况下没有必要定义一个新类。你所有的字段都是字符串你在类中没有方法或属性。它只是一个字符串数组。用途:

var results = new List<string[]>(); 
...
var lines = new string[5];
lines[0] = strLine;
lines[1] = objInput.ReadLine();
lines[2] = objInput.ReadLine();
lines[3] = objInput.ReadLine();
lines[4] = objInput.ReadLine();
results.Add(lines);