2012-12-20 12 views
6

In VB.NET, è possibile creare un'istanza e utilizzare immediatamente un array come questo:C# ha un equivalente VB.NET per la dichiarazione dell'arma di stenografia come {"stringa1", "stringa2"}?

Dim b as Boolean = {"string1", "string2"}.Contains("string1")

in C#, tuttavia, si sembra avere a che fare questo:

bool b = new string[] { "string1", "string2" }.Contains("string1");

fa C# ha una sintassi abbreviata equivalente che usa l'inferenza di tipo per determinare il tipo di matrice senza che debba essere esplicitamente dichiarata?

risposta

19

Implicitly typed arrays non devono includere il loro tipo, a condizione che può essere inferred:

bool b = new [] { "string1", "string2" }.Contains("string1"); 
+0

E potete leggere di più qui: http://msdn.microsoft.com/en-us/library/bb384090.aspx – Pete

+0

Ah, peccato. Speravo di non dover nemmeno specificare anche 'new []', ma immagino sia quello che è. Grazie. – oscilatingcretin

3

Si chiama Implicitly Typed Arrays

È possibile creare una matrice implicitamente tipizzate in cui il tipo di l'istanza dell'array viene dedotta dagli elementi specificati nell'inizializzatore dell'array . Le regole per qualsiasi variabile implicitamente tipizzata si applicano anche agli array tipizzati implicitamente.

static void Main() 
    { 
     var a = new[] { 1, 10, 100, 1000 }; // int[] 
     var b = new[] { "hello", null, "world" }; // string[] 
    } 

Si può usare anche per matrice irregolare.

Problemi correlati