Search code examples
c#arraysvisual-studioconsole-application

How the first array entry differs from the second


I can not understand the difference between the declaration with array initialization in the first case and the second

int[] array = new int[3] { 1, 2, 3 };
int[] secondArray = { 1, 2, 3 };

They seem to do the same thing, maybe they work differently?


Solution

  • The is no difference in the result between the two show lines shown:

    int[] array = new int[3] { 1, 2, 3 };
    int[] secondArray = { 1, 2, 3 };
    

    However, there are practical differences between new int[n] {...} syntax and {...}:

    1. Implicit type is not available for the alternative array initialiser:

      var a1 = new int[3] { 1, 2, 3 }; // OK
      var a2 = { 1, 2, 3 }; // Error: Cannot initialize an implicitly-typed variable with an array initializer
      
      // BTW. You can omit the size
      var a3 = new int[] { 1, 2, 3 }; // OK
      
    2. With the alternative syntax you cannot specify the size, it's always inferred.

      var a1 = new int[100]; // Array with 100 elements (all 0)
      int[] a2 = { }; // Array with no elements