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?

下一篇: Iterating a dictionary in C#