2013-08-28 6 views
8

ich über Implizit typisierte lokale Variablen las (var) aufEinschränkungen gelten für implizit typisierte Variablendeklarationen

http://msdn.microsoft.com/en-us/library/bb384061.aspx

Darin heißt es eine Einschränkung:

Wenn ein Typ var benannt ist in Geltungsbereich, dann wird das Schlüsselwort var in diesen Typnamen aufgelöst und nicht als Teil einer implizit typisierten lokalen Variablendeklaration behandelt.

Kann jemand erklären, was mit Aussage mit C# -Beispiel gemein ist?

Antwort

12

Dass, wenn Sie dies tun:

class var 
{ 
    public static implicit operator var(int value) 
    { 
     return new var(); 
    } 
} 

var myVar = 5; 

Die myVar von var Typ sein und nicht vom Typ int.

(die operator Ich habe hinzugefügt, dass es eine implizite Konvertierung von int zu var) ist.

Diese Regel wurde eingefügt, weil var kein reserviertes Schlüsselwort in C# war (und immer noch nicht ... Wenn Sie here sehen, werden Sie sehen, es ist ein "kontextuelles Schlüsselwort"), also eine Klasse/struct/enum Der Name var war in C# 2.0 gültig.

  • Wenn ein Typ namens var im Gültigkeitsbereich befindet: wenn es eine Klasse/Struktur/enum namens var, die in ihrem Umfang ist (so „erreichbar“, indem Sie einfach var schreiben, ohne einen Namensraum verwenden)

  • dann wird das Schlüsselwort var zu diesem Typ Namen auflösen: dann var bedeutet „Ihr Benutzertyp definiert“ und nicht „das Schlüsselwort var“

+0

das ist sehr klar und perfekt expla ist Nation!!! Danke vielmals –

Verwandte Themen