C# tricks: Array initialization in C# 3.0

I found pretty slick new feature in C# 3.0 that I haven’t seen anyone mentioning before.

In C# 2.0 to initialize List<T> inline you had to use arrays, like

List<string> keys = new List<string>(new string[]{"key1"});

As you probably already know, in C# 3.0 you can initialize collections in in similar way like you did with arrays in C# 2.0:

List<string> keys = new List<string>(){"key1"};

This has been said many times in many places. What I missed however, was that syntax for initializing arrays changed as well. Now you can simply write:

string[] keys = new[]{"key1"};

Did you know that?

Technorati Tags: ,

5 Thoughts.

  1. You can also write:

    int[] liczby = { 6, 6, 6 }; // without new[]

    int[][] liczby2 = {
    new int[] { 0, 1, 2, 3, 4 },
    new int[] { 4, 3, 2, 1, 0 },
    };

    Did you know THAT? 😉

  2. Marek,

    Hmmm, this is slick. And it seems to be working with C# 2.0 as well. How come I didn’t know that?

    BTW,
    for MD array you can use new[] instead of new int[] to make it even smaller. (in C# 3.0)

  3. string[] keys = new[]{"key1"};
    doesn’t that just initialize the first value of the array. Or rather, set the array length to 1 and use the only value to initialize the only element!
    int [] theintarray = new []{myintvar};
    Is there something clever that does this initialization:
    for(int i=0;i<theintarray.Length;i++)theintarray[i] = myintvar;
    I’m looking for a repitition factor in the initialization list.

Comments are closed.