我再次发帖,似乎无法找到一种简单的方法来转换它。我试图摆脱这个方法的二维数组,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
答案 0 :(得分:1)
所以你有不同数量的事件,每个事件都有5行“文本”你想单独存储?创建一个类来表示每个事件数据,并创建它们的列表。
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
答案 1 :(得分:0)
不得不重复迪伦史密斯所说的话;上课。
我不完全确定你要做什么,但看起来你想要每天发生的一系列事件。如果是这样,那么课程真的最有意义。该类不仅会存储这些字符串,而且还可以拥有越来越多的易于管理的数据(比如事件发生的时间)。
真的,如果你发现自己遇到了这样一个问题,你想要的不只是一个变量来保存一些关于某事的信息,那就建立一个类或一个结构。你以后会感谢自己。
答案 2 :(得分:0)
我看到在这种情况下没有定义新类的意义。您的所有字段都是字符串,并且您在课程中没有方法或属性。它只是一个字符串数组。使用:
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);