对象数组的C#问题

对象数组的C#问题,c#,arrays,object,C#,Arrays,Object,我对C#中的数组相当陌生,习惯于将大量数据存储在字符串和INI文件中,然后使用分隔符将其分解为基本数组……所以,是的,我的知识几乎不存在 我的主窗体类从以下定义开始: public CAirportData[] _AirportData; //size not known 这是我用来创建数组的方法: ...string[] airports = possibleAirports.Split(','); //size is known foreach (string airport in air

我对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数组在表单之外可用,因此它是公共的,并在任何方法之外声明。我想主要的问题是我正在覆盖数组,而对于每个机场,我正在创建一个新的数组,因此失去了以前的数组。我曾尝试将..=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; }
}

非常感谢您的帮助

您要查找的是通用列表。将定义更改为:

public List<CAirportData> _AirportData = new List<CAirportData>();

这就是我要做的…创建一个具有静态属性(airports)的静态类,并添加一个静态构造函数,从文件开始加载airports

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

阅读第一部分。您正在声明一个数组_AirportData,然后每次创建一个元素的新数组。在你的情况下,你应该使用像List之类的泛型container。是的,你说得对。阅读关于列表的内容(也有示例)。您还可以在循环之外声明数组,因为您知道希望它的大小(
airports.length
),这正是我想要的-它工作得非常好。非常感谢你!为Govix干杯,请注意jswolf19评论,这是为您准备的。:)<代码>\u AirportData仍然不会包含OP想要的所有数据。
MessageBox.Show(Session.CAirportData[0].depRwy);