对象数组的C#问题
我对C#中的数组相当陌生,习惯于将大量数据存储在字符串和INI文件中,然后使用分隔符将其分解为基本数组……所以,是的,我的知识几乎不存在 我的主窗体类从以下定义开始:对象数组的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
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);