C#:多元素列表? (如记录列表):如何最好地做到这一点?
我喜欢列表,因为它们非常易于使用和管理。 但是,我需要列出多个元素,例如记录。
我是C#的新手,并感谢所有帮助! (Stackoverflow的岩石!)
考虑这个直接的,单个元素列表的工作示例,它很好用:
public static List<string> GetCities()
{
List<string> cities = new List<string>();
cities.Add("Istanbul");
cities.Add("Athens");
cities.Add("Sofia");
return cities;
}
如果我希望列表中每条记录都有两个属性,我该怎么做? (作为一个数组?)
例如,这个伪代码的真实代码是什么?
public static List<string[2]> GetCities()
{
List<string> cities = new List<string>();
cities.Name,Country.Add("Istanbul","Turkey");
cities.Name,Country.Add("Athens","Greece");
cities.Name,Country.Add("Sofia","Bulgaria");
return cities;
}
谢谢!
一个List<T>
可以容纳任何类型的实例 - 所以你可以创建一个自定义类来容纳你想要的所有属性:
public class City
{
public string Name {get;set;}
public string Country {get;set;}
}
...
public List<City> GetCities()
{
List<City> cities = new List<City>();
cities.Add(new City() { Name = "Istanbul", Country = "Turkey" });
return cities;
}
public class City
{
public City(string name, string country)
{
Name = name;
Country = country;
}
public string Name { get; private set; }
public string Country { get; private set; }
}
public List<City> GetCities()
{
return new List<City>{
new City("Istanbul", "Turkey"),
new City("Athens", "Greece"),
new City("Sofia", "Bulgaria")
};
}
如果你确实不需要列表,并且不太可能,那么可以使返回类型IEnumerable<City>
,这是更通用的。 你仍然可以返回一个列表,但你也可以这样做:
public IEnumerable<City> GetCities()
{
yield return new City("Istanbul", "Turkey"),
yield return new City("Athens", "Greece"),
yield return new City("Sofia", "Bulgaria")
}
如果你要循环城市,例如在土耳其找到第一个城市,或者以第一个字母I开始的第一个城市,那么你就不必实例化所有的城市,就像列表一样。 相反,第一个City将被实例化和评估,并且只有在需要进一步评估时才会实例化随后的City对象。
对于即时处理,您可以使用元组(在.NET 4.0中):
List<Tuple<string,string>> myShinyList = new List<Tuple<string,string>> {
Tuple.Create("Istanbul","Turkey"),
Tuple.Create("Athens","Greece"),
Tuple.Create("Sofia","Bulgaria")
}
链接地址: http://www.djcxy.com/p/30393.html
上一篇: C#: Multi element list? (Like a list of records): How best to do it?