Wie in:
%Vor%Hinweis: Das obige kompiliert nicht und funktioniert nicht (die Var kann dort nicht verwendet werden), es ist nur um meinen Punkt zu zeigen.
Update : Nur um die Frage zu klären, hatte ich bereits versucht,
zu verwenden %Vor%und das funktioniert, aber es erzeugt wegen der dynamischen Typisierung kein Intellisense. Ich bin mir bewusst, dass das anonyme Tippen nur ein Compiler-Trick ist, also hoffte ich, dass ich diesen Trick zu meinem Vorteil nutzen konnte, indem ich ein strukturiertes Feld deklarierte, ohne vorher eine Klasse deklarieren zu müssen (hauptsächlich, weil es nur eine Instanz dieser besonderen Art geben wird) Feld). Ich kann jetzt sehen, dass es nicht möglich ist, aber ich bin mir nicht sicher, warum das so ist. Wenn der Compiler einfach einen impliziten Typ für ein anonymes Objekt generiert, sollte es ziemlich einfach sein, dass der Compiler diesen impliziten Typ für ein Feld generiert.
Es hört sich so an, als könnten Sie eine oder zwei Fragen stellen, also werde ich versuchen, beide anzusprechen.
Kann ein Klassenfeld stark in einen anonymen Typ eingetippt werden
Nein. Anonyme Typnamen können nicht in C # -Code angegeben werden (daher anonym). Die einzige Möglichkeit, sie statisch einzugeben, ist
var
-Schlüssels Keine davon ist auf das Feld eines Typs anwendbar.
Kann ein Klassenfeld mit einem anonymen Typ-Ausdruck initialisiert werden?
Ja. Das Feld muss nur zu einem Typ deklariert werden, der mit anonymen Typen kompatibel ist: object
zum Beispiel
Wenn dies C # 4 ist, sehen Sie sich das dynamische Schlüsselwort an.
%Vor%Sobald Sie dies tun, verlieren Sie jedoch jegliche Art von Sicherheitsprüfungen und praktische Compiler-Prüfungen.
Wie wäre es stattdessen mit Tuple<string, string>
?
Eine Eigenschaft (oder ein Feld) von einer benannten Klasse kann keinen anonymen Typ haben, da auf einen solchen Typ im Code nicht verwiesen werden kann. Jedoch kann ein anonymer Typ Eigenschaften des anonymen Typs enthalten:
%Vor%Aber solch ein Konstrukt hat keinen praktischen Nutzen außerhalb des lokalen Geltungsbereichs ...
Nein, anonyme Typen können nicht außerhalb ihrer deklarierenden Funktion als etwas anderes als object
angezeigt werden. Während der anonyme Typ nur syntaktischer Zucker ist und tatsächlich einen konkreten Typ erzeugt, ist dieser Typ dem Entwickler nie bekannt (und nicht verfügbar) und kann daher nicht verwendet werden.