我对C#中的数组相当新,并且习惯于在字符串和INI文件中存储大量数据,然后使用分隔符将其分解为基本数组......所以,我的知识几乎不存在。
我的主要表单类开始这个定义:
public CAirportData[] _AirportData; //size not known
这是我用来创建数组的方法:
...string[] airports = possibleAirports.Split(','); //size is known
foreach (string airport in airports)
{
string[] rwys = inif.Read(airport, "rwys").Split(':'); //size is known (2)
_AirportData = new CAirportData[] { new CAirportData() { icao=airport, depRwy=rwys[0], arrRwy=rwys[1] } };
}
我知道这只是归结为我对对象和数组的有限知识。但我似乎无法在互联网上找到任何使用此类东西的东西。我试图将其他人的代码结合起来,但收效甚微。
我需要_AirportData数组在表单之外可用,因此是public并在任何方法之外声明。我认为主要的问题是我正在覆盖阵列和foreach机场我正在创建一个新阵列因此失去了以前。我曾尝试将.. = new CAirportData []移动到各种各样的地方,但Visual Studio不喜欢它。
以下是CAirportData的类定义:
public class CAirportData
{
public string icao { get; set; }
public string depRwy { get; set; }
public string arrRwy { get; set; }
public override string ToString()
{
string result = string.Format("ICAO: {0}, Dep: {1}, Arr: {2}", this.icao, this.depRwy, this.arrRwy);
return result;
}
}
public class CMRunways
{
public string icao { get; set; }
public string depRwy { get; set; }
public string arrRwy { get; set; }
}
非常感谢您的任何帮助!
答案 0 :(得分:3)
您正在寻找的是通用列表。将定义更改为:
public List<CAirportData> _AirportData = new List<CAirportData>();
然后循环中的代码:
_AirportData.Add(new CAirportData { icao=airport, depRwy=rwys[0], arrRwy=rwys[1] });
答案 1 :(得分:-1)
这就是我要做的...创建一个带静态属性(机场)的静态类,并添加一个静态构造函数,以便在开始时从文件加载机场。
public static class Session
{
public static CAirportData[] _AirportData;
static Session()
{
string airports = possibleAirports.Split(",");
foreach (string airport in airports)
{
string[] rwys = inif.Read(airport, "rwys").Split(':'); //size is known (2)
_AirportData = new CAirportData[] { new CAirportData() { icao=airport, depRwy=rwys[0], arrRwy=rwys[1] } };
}
}
}
现在您可以在项目的任何位置访问数组,如
MessageBox.Show(Session.CAirportData[0].depRwy);