Składnia wyrażeń tworzenia array (§7.5.10.2) zostaje przedłużony do wsparcia niejawnie wpisywanych wyrażeń tworzenia tablicy: array-Creation-wyrażenie: ... new [ ] array-initializer
W niejawnie wpisywanych tworzenia macierzy wyrażenie, typ instancji tablicy jest wywnioskowany z elementów określonych w inicjatorze tablicy . W szczególności zestaw utworzony przez typy wyrażeń w inicjatorze macierzy musi zawierać dokładnie jeden typ do , w którym każdy typ w zestawie jest niejawnie wymienialny, a jeśli ten typ nie jest typem zerowym, tablica tego typu jest stworzony. Jeśli nie można wywnioskować dokładnie jednego typu: lub jeśli wywnioskowany typ jest typu pustego, pojawia się błąd kompilacji .
Poniżej przedstawiono przykłady niejawnie wpisywanych stworzenie tablicy wyrażeń:
var a = new[] { 1, 10, 100, 1000 }; // int[]
var b = new[] { 1, 1.5, 2, 2.5 }; // double[]
var c = new[] { "hello", null, "world" }; // string[]
var d = new[] { 1, "one", 2, "two" }; // Error
ostatniego wyrażenia powoduje błąd kompilacji, ponieważ ani int ani ciąg jest niejawnie zamienny do drugiego. W tym przypadku należy użyć jawnie wpisanego wyrażenia kreującego tablicę , na przykład określając typ obiektu []. Alternatywnie, jeden z elementów może zostać odlany do wspólnego typu podstawowego, który następnie stałby się domniemanym typem elementu .
Wyrażenia jawnie tworzone przez tablicę można łączyć z anonimowymi inicjalizatorami obiektów w celu utworzenia anonimowo wpisanych danych o strukturach . Np
var contacts = new[] {
new {
Name = "Chris Smith",
PhoneNumbers = new[] { "206-555-0101", "425-882-8080" }
},
new {
Name = "Bob Harris",
PhoneNumbers = new[] { "650-555-0199" }
}
};
Nie możesz po prostu sprawdzić typu "jsona", aby zobaczyć, co powraca? –