代码之家  ›  专栏  ›  技术社区  ›  kateroh

使csc2.0高兴的列表初始化

  •  1
  • kateroh  · 技术社区  · 15 年前

    我需要初始化一堆列表,并在初始化过程中用许多值填充它们,但是我必须使用的csc2.0编译器不喜欢它。例如:

    List<int> ints = new List<int>() { 1, 2, 3 };
    

    错误CS1002:;应为

    有没有一种方法可以初始化一个列表,使csc 2.0编译器不必做这样难看的事情:

    List<int> ints = new List<int>();
    ints.Add(1);
    ints.Add(2);
    ints.Add(3);
    
    3 回复  |  直到 15 年前
        1
  •  10
  •   JaredPar    15 年前

    您正在使用一个名为collection initializers的功能,该功能是在C#3.0中添加的,因此在C#2.0编译器中不存在。最接近语法的方法是使用传递给 List<T> 建造师。

    List<int> ints = new List<int>(new int[] { 1, 2, 3 });
    

    注意:这种方法产生的代码与C集合初始值设定项版本有很大不同。

        2
  •  2
  •   Timwi    15 年前
    int[] values = { 1, 2, 3, 4 };
    List<int> ints = new List<int>(values);
    
        3
  •  1
  •   Jay    15 年前

     private static List<T> NewList<T>(params T[] items)
     {
         return new List<T>(items);
     }
    

     List<int> ints = NewList(1,2,3);
     List<string> strings = NewList("one","two","three");
     // etc.
    
    推荐文章