Todas las formas posibles de inicializar arrays en C#: revisión completa de la sintaxis
¡Hola a todos! Acabo de empezar a aprender C# y constantemente me confundo con las diferentes formas de crear arrays. Parece que hay montones de opciones: new int[] {1,2,3}, simplemente {1,2,3}, new[] {1,2,3} y así sucesivamente. Ya vi una pregunta similar en StackOverflow, pero está todo en inglés, y me gustaría obtener una explicación clara en español.
Concretamente me interesa:
1. ¿Qué sintaxis existen para inicializar arrays en C#?
2. ¿En qué situaciones es mejor usar cada sintaxis?
3. ¿Hay diferencias entre arrays unidimensionales, multidimensionales y jagged?
Pongo un ejemplo que me confunde. ¿Por qué esto funciona:
```csharp
int[] arr1 = new int[3] { 1, 2, 3 };
int[] arr2 = new int[] { 1, 2, 3 };
int[] arr3 = new[] { 1, 2, 3 };
int[] arr4 = { 1, 2, 3 };
```
Y esto no:
```csharp
int[] arr5;
arr5 = { 1, 2, 3 }; // Error de compilación
```
Y además: ¿se puede crear un array y pasarlo directamente a un método en una sola línea? Agradecería una respuesta detallada con ejemplos.