In generale è possibile utilizzare il (probabilmente puzzolente) espressi da altri esempio trucco hanno citato per creare istanze di qualsiasi tipo generico parametrizzati con un tipo anonimo per l'argomento tipo. Tuttavia, per List<T>
c'è un modo un po 'meno grave di farlo:
var array = new[] {
new {
Name="Krishna",
Phones = new[] {"555-555-5555", "666-666-6666"}
}
};
var list = array.ToList();
tuo schizzo di una sintassi proposto è simile ad una caratteristica non abbiamo implementiamo per C# 3 o 4, ma abbiamo preso in considerazione. Chiamiamo la funzione "tipi mumble", e sarebbe più o meno così:
List<?> myList = new List<?>() {
new {
Name="Krishna",
Phones = new[] {"555-555-5555", "666-666-6666"}
}
};
Noi lo chiamiamo "tipi mumble" perché ovviamente che ci leggete "myList è un nuovo elenco di hrmmf". :-)
L'idea è che il compilatore guardi gli inizializzatori e faccia del suo meglio per capire quale potrebbe essere il tipo, proprio come "var" significa "guarda l'inizializzatore e calcola quale è il tipo di variabile ". Se usassimo "var" come "mumble" o "?" (che è simile a ciò che Java fa in una funzione correlata), o qualcos'altro è una domanda aperta.
In ogni caso, non terrei il fiato in attesa di questa funzione se fossi in te. Non ha fatto il taglio per diverse versioni linguistiche finora, ma rimarrà sulla lista delle possibilità per un po 'di tempo penso. Se, ipoteticamente parlando, dovessimo progettare versioni future della lingua. Che potremmo o non potremmo essere. Ricorda, le riflessioni di Eric sulle versioni future di C# sono solo a scopo di intrattenimento.
fonte
2010-02-24 18:25:09
Non capisco quale sia il punto di un elenco con tipi anonimi. –
Ci sono alcuni casi d'uso per loro. Un esempio è quando è necessario combinare una query LINQ-to-SQL con una raccolta con memoria di riserva. – Polynomial