Collection expressions in C# 12.0

Collection expressions are a new feature introduced in C# 12.0.  A lot of us know about collections and are very familiar with generic collections.

We know that in collections, a lot of flavors like arrays, lists.. etc. Till C# 11.0, different collections used different syntaxes for initialization.

Let us go through the old syntaxes, which will be revision for us. This article will demo both arrays and lists.

Arrays are one of the collections we rapidly use in many scenarios. I will have a look at different ways of array initializations

// old way of initialization
int[] array1 = new int[] { 1, 2, 3, };
int[] array2 = new [] {1, 2, 3, };
int[] array3 = { 1, 2, 3, };

In the above code, initialized arrays in different ways till C# 11.0. Even in C#, 12.0, we can follow the same way of initialization. But the new version introduced a new way of initialization,

// new way in collection expressions
int[] array4 = [1, 2, 3,4];  

In the same way, will have to look at the list's initialization in the older way.

List<int> myList1 = new List() { 10, 11, 12 };
List<int> myList2 = new() { 10, 11, 12 };

For Lists also, we can use the same syntax in C# 12.0, as well as array initialization.

List<int> myList3 = [ 10, 11, 12 ];

Add on to new syntaxes. We can also use the spread operator widely while working with collections. The Spread operator will help us to append a new collection to the existing collection. We can also add more values to the collection with simple syntax.

List<int> myList2 = [..myList];
List<int> myList2 = [..myList, 20,30];
List<int> myList2 = [..myList, ..array4];
List<int> myList2 = [300, ..myList, 200, ..array, 100];

Let me explain the above lines. One list is added two more elements with spread operator Append array values, with list values and assign to the target list. Add elements, append lists, and arrays in between the lists and assign those to a single target list.

In this way, we can achieve multiple collection initialization using the same syntax i.e. collection expressions.

//iterate through arrays
for (int i = 0; i < array4. Length; i++)
{
Console.WriteLine(array4[i]);
}

//iterate through lists
Foreach(var ele in myList2)
{
Console.WriteLine(ele);
}

In the above manner, we can iterate through lists and arrays using our regular for and foreach loops.

Why do you want to stop here, go ahead with our similar stuff List Patterns in C# 11.0

Next Recommended Reading Primary Constructors in C# 12