对象数组的C#问题

时间:2011-09-04 13:35:45

标签: c# arrays object

我对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; }
}

非常感谢您的任何帮助!

2 个答案:

答案 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);