861 votes

Tous les possibles c# tableau d’initialisation syntaxes

Pouvez vous répertorier tous init tableau possible. syntaxe qui est possible avec c#. Cela devient vraiment déroutant savoir quand il est un initialiseur de tableau ou d’une déclaration séparée.

Remarque : J’ai cherché le site Web MSDN, google il mais il n’est pas un guide tout-en-un.

Edit : J’utilise .NET 3.5 + c#

931voto

Anthony Pegram Points 58528

Ce sont les courants de déclaration et de méthodes d'initialisation d'un tableau simple.

string[] array = new string[2]; // creates array of length 2, default values
string[] array = new string[] { "A", "B" }; // creates populated array of length 2
string[] array = { "A" , "B" }; // creates populated array of length 2

Notez que d'autres techniques d'obtention des tableaux existent, comme le Linq ToArray() extensions IEnumerable<T>.

Notez également que dans les déclarations ci-dessus, les deux premières pourraient remplacer l' string[] sur la gauche avec var (C# 3+), que l'information sur le droit est suffisant pour en déduire le type approprié. La troisième ligne doit être écrit tel qu'il est affiché comme initialisation de tableau de syntaxe seule n'est pas suffisante pour satisfaire le compilateur de sa demande. Donc, si vous êtes dans l'ensemble de la brièveté de la chose, la ci-dessus peut être écrite comme

var array = new string[2]; // creates array of length 2, default values
var array = new string[] { "A", "B" }; // creates populated array of length 2
string[] array = { "A" , "B" }; // creates populated array of length 2

469voto

Eric Lippert Points 300275

La création du groupe de la syntaxe de C# qui sont les expressions sont:

new int[3]
new int[3] { 10, 20, 30 }
new int[] { 10, 20, 30 }
new[] { 10, 20, 30 }

Dans la première, la taille peut être n'importe quel non-négatif valeur intégrale et les éléments du tableau sont initialisés avec les valeurs par défaut.

Dans la seconde, la taille doit être une constante et le nombre d'éléments doivent correspondre. Il doit y avoir une conversion implicite à partir des éléments donnés à l'égard de ce type d'élément de tableau.

Dans le troisième, les éléments doivent être implicitement converti vers le type de l'élément, et la taille est déterminée à partir du nombre d'éléments donnés.

Dans le quatrième le type de l'élément du tableau est déduit par le calcul le meilleur type, s'il en est, de tous les éléments qui ont des types. Tous les éléments doivent être implicitement converti à ce type. La taille est déterminée à partir du nombre d'éléments donnés. Cette syntaxe a été introduite en C# 3.0.

Il y a aussi une syntaxe qui ne peuvent être utilisées dans une déclaration:

int[] x = { 10, 20, 30 };

Les éléments doivent être implicitement converti vers le type de l'élément. La taille est déterminée à partir du nombre d'éléments donnés.

il n'y a pas un tout-en-un guide de

Je vous renvoie à C# 4.0 spécification, la section 7.6.10.4 "la Création de la Matrice des Expressions".

127voto

Non-tableaux vides

  • var data0 = new int[3]

  • var data1 = new int[3] { 1, 2, 3 }

  • var data2 = new int[] { 1, 2, 3 }

  • var data3 = new[] { 1, 2, 3 }

  • var data4 = { 1, 2, 3 } n'est pas compilable. Utiliser int[] data5 = { 1, 2, 3 } à la place.

Des tableaux vides

  • var data6 = new int[0]
  • var data7 = new int[] { }
  • var data8 = new [] { } et int[] data9 = new [] { } ne sont pas compilable.

  • var data10 = { } n'est pas compilable. Utiliser int[] data11 = { } à la place.

Comme un argument d'une méthode

Seules les expressions qui peuvent être affectés à l' var mot-clé peut être passé comme argument.

  • Foo(new int[2])
  • Foo(new int[2] { 1, 2 })
  • Foo(new int[] { 1, 2 })
  • Foo(new[] { 1, 2 })
  • Foo({ 1, 2 }) n'est pas compilable
  • Foo(new int[0])
  • Foo(new int[] { })
  • Foo({}) n'est pas compilable

55voto

Atomosk Points 585
<pre><code></code><p>Créera le tableau des temps de chaînes vides répétés « count ». En cas vous souhaitez initialiser le tableau avec la valeur de l’élément par défaut même encore spéciale. Attention aux types référence, tous les éléments seront référeront même objet.</p></pre>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X