我如何将代码从二维数组转换为列表
本文关键字:二维数组 转换 列表 代码 | 更新日期: 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);