2011-01-15 13 views
18

Ich bin über diesen Code-Snippet neugierig:dieser Parameter Modifikator in C#?

public static class XNAExtensions 
{ 
    /// <summary> 
    /// Write a Point 
    /// </summary> 
    public static void Write(this NetOutgoingMessage message, Point value) 
    { 
     message.Write(value.X); 
     message.Write(value.Y); 
    } 
    // ... 
}; 

Was bedeutet das this Schlüsselwort auf den Parameter Typen nächste bedeuten? Ich kann nirgendwo Informationen darüber finden, auch nicht in der C# Spezifikation.

Antwort

24

Das ist ein extension method.

Die Syntax bedeutet, dass Sie die Methode aufrufen kann, als ob es sich um ein Mitglied der NetOutgoingMessage Klasse war:

var msg = new NetOutgoingMessage(); 
XNAExtensions.Write(msg, somePoint); 

Es ist einfach schön syntaktische:

var msg = new NetOutgoingMessage(); 
msg.Write(somePoint); 

Diese im Grunde durch den Compiler neu geschrieben wird Zucker.

0

Es zeigt an, dass Write eine extension method zu der NetOutgoingMessage Klasse ist.

2

So ist eine extension method definiert.

Was dies bedeutet im Wesentlichen, dass, obwohl dieses Verfahren in einer Einkapselung statische Klasse enthalten ist, wenn die Art spezifiziert Verwendung (in den Erweiterungsmethode Parameter beschriftet this) Ein solches Verfahren wird automatisch belichtet werden, damit:

var typeInstance = new TypeWithExtensionMethod(); 
typeInstance.ExtensionMethod(anyParametersRequiredButNotTypeInstance); 

ist möglich, im Gegensatz zu:

var type = new TypeWithExtensionMethod(); 
ExtensionMethods.ExtensionMethod(typeInstance, anyOtherParametersRequired); 
0

es bedeutet, es ist eine Erweiterung Methode. MSDN

0

Es ist Erweiterungsmethode für NetOutgoingMessage Klasse.

man hier: link text

3

Was ist das Schlüsselwort this auf den Parameter Typ nächste bedeuten?

Es bedeutet, dass die Methode eine Erweiterungsmethode ist.

Ich kann nirgendwo Informationen finden, auch nicht in der C# -Spezifikation.

Die gesuchten Informationen finden Sie in Abschnitt 10.6.9 der C# 4-Spezifikation.

Verwandte Themen