Auto-initializing C# lists

后端 未结 6 2101
有刺的猬
有刺的猬 2020-12-14 05:15

I am creating a new C# List (List). Is there a way, other than to do a loop over the list, to initialize all the starting values to 0?

相关标签:
6条回答
  • 2020-12-14 05:58

    A bit late, but maybe still of interest: Using LINQ, try

    var initializedList = new double[10].ToList()

    ...hopefully avoiding copying the list (that's up to LINQ now).

    This should be a comment to Michael Meadows' answer, but I'm lacking reputation.

    0 讨论(0)
  • 2020-12-14 06:00

    Use this code:

    Enumerable.Repeat(0d, 25).ToList();
    new List<double>(new double[25]);     //Array elements default to 0
    
    0 讨论(0)
  • 2020-12-14 06:03

    One possibility is to use Enumerable.Range:

    int capacity;
    var list = Enumerable.Range(0, capacity).Select(i => 0d).ToList();
    

    Another is:

    int capacity;
    var list = new List<double>(new double[capacity]);
    
    0 讨论(0)
  • 2020-12-14 06:08

    For more complex types:

    List<Customer> listOfCustomers =
            new List<Customer> {
                { Id = 1, Name="Dave", City="Sarasota" },
                { Id = 2, Name="John", City="Tampa" },
                { Id = 3, Name="Abe", City="Miami" }
            };
    

    from here: David Hayden's Blog

    0 讨论(0)
  • 2020-12-14 06:15

    In addition to the functional solutions provided (using the static methods on the Enumerable class), you can pass an array of doubles in the constructor.

    var tenDoubles = new List<double>(new double[10]);
    

    This works because the default value of an double is already 0, and probably performs slightly better.

    0 讨论(0)
  • 2020-12-14 06:20

    You can use the initializer:

    var listInt = new List<int> {4, 5, 6, 7};
    var listString = new List<string> {"string1", "hello", "world"};
    var listCustomObjects = new List<Animal> {new Cat(), new Dog(), new Horse()};
    

    So you could be using this:

    var listInt = new List<double> {0.0, 0.0, 0.0, 0.0};
    

    Otherwise, using the default constructor, the List will be empty.

    0 讨论(0)
提交回复
热议问题