Warum verwendet PowerShell doppelten Doppelpunkt (::), um statische Methoden einer .NET-Klasse aufzurufen? [geschlossen]

8

Gibt es einen bestimmten Grund, C ++ - Stil des Doppelpunkts '::' zu verwenden? Warum nicht einen einfachen Punkt wie c # verwenden?

    
nhrobin 20.07.2013, 06:33
quelle

1 Antwort

21

Dies ist eine Frage für Windows PowerShell in Aktion.

  

Der Operator :: ist der statische Member-Accessor. Während der Punkt   Der Operator hat Instanzmitglieder, den Doppelpunktoperator, abgerufen   greift auf statische Member einer Klasse zu, wie dies bei der Verknüpfung der Fall ist   Methode im Beispiel am Ende des letzten Abschnitts. Der linke Operand   Für den statischen Member Accessor muss ein Typ sein - entweder ein Typ   Literal oder ein Ausdruck, der einen Typ zurückgibt, wie Sie hier sehen:

%Vor%      

Das Sprachdesign-Team entschied sich für einen separaten Operator für   Zugriff auf statische Methoden aufgrund der Art, wie statische Methoden sind   zugegriffen. Hier ist das Problem. Wenn Sie einen Typ MyModule mit einer statischen haben   Eigenschaft namens Module, dann der Ausdruck

     

[MyModule].Module

     

ist   mehrdeutig. Dies liegt daran, dass auch ein Instanzenmitglied Modul vorhanden ist   die System.Type-Instanz, die den Typ MyModule darstellt. Jetzt kannst du nicht   Sagen Sie, ob das Instanzmitglied "Module" auf System.Type oder das "Modul"   Statisches Element in MyModule sollte abgerufen werden. Durch die Verwendung der   Doppelpunktoperator entfernen Sie diese Mehrdeutigkeit.

     

Hinweis

     

Andere Sprachen   umgehen Sie diese Mehrdeutigkeit mit dem Operator typeof (). Verwenden   typeof () in diesem Beispiel, typeof (Mein Modul) .Module ruft die   Instanzeigenschaft für das Type-Objekt und MyModule.Module ruft die   statische Eigenschaft, die von der MyModule-Klasse implementiert wird.

Bruce Payette (2011-08-02 16: 22: 31.490000-05: 00). Windows PowerShell in Aktion, zweite Ausgabe (Kindle-Standorte 4494-4507). Manning Publikationen. Kindle Edition.

    
Andy Arismendi 20.07.2013, 07:57
quelle

Tags und Links