Verwenden von Attributen (C#-Programmierhandbuch)

Aktualisiert: November 2007

Attribute können in nahezu jede Deklaration eingefügt werden, obwohl spezifische Attribute u. U. nur für bestimmte Deklarationstypen zulässig sind. Syntaktisch gesehen geben Sie ein Attribut an, indem Sie den Namen des Attributs in eckigen Klammern vor der Deklaration der Entität einfügen, auf die es sich bezieht. Eine Methode mit dem DllImport-Attribut wird z. B. wie folgt deklariert:

[System.Runtime.InteropServices.DllImport("user32.dll")]
extern static void SampleMethod();

Weitere Informationen finden Sie unter DllImportAttribute-Klasse.

Zahlreiche Attribute verfügen über Parameter, die entweder positionell (unbenannt) oder benannt sind. Positionelle Parameter müssen in einer bestimmten Reihenfolge angegeben und dürfen nicht weggelassen werden. Benannte Parameter sind optional und können in einer beliebigen Reihenfolge angegeben werden. Positionelle Parameter werden zuerst angegeben. Die folgenden drei Attribute sind beispielsweise äquivalent:

[DllImport("user32.dll")]
[DllImport("user32.dll", SetLastError=false, ExactSpelling=false)]
[DllImport("user32.dll", ExactSpelling=false, SetLastError=false)]

Der erste Parameter in Form des DLL-Namens ist positionell und muss stets zuerst angegeben werden. Die anderen Parameter sind benannte Parameter. In diesem Fall werden beide benannten Parameter standardmäßig auf false festgelegt, sodass sie weggelassen werden können. Informationen über Standardparameterwerte finden Sie in der Dokumentation des jeweiligen Attributs.

In einer Deklaration können mehrere Attribute verwendet werden, und zwar entweder separat oder innerhalb einer Klammer:

void MethodA([In][Out] ref double x) { }
void MethodB([Out][In] ref double x) { }
void MethodC([In, Out] ref double x) { }

Einige Attribute können mehrfach für die jeweilige Entität angegeben werden. Conditional ist ein Beispiel für ein mehrfach verwendbares Attribut:

[Conditional("DEBUG"), Conditional("TEST1")]
void TraceMethod()
{
    // ...
}
Hinweis:

Alle Attributnamen enden vereinbarungsgemäß mit dem Wort "Attribute", um sie von anderen Elementen in .NET Framework zu unterscheiden. Bei Verwendung von Attributen im Code muss das Attributsuffix jedoch nicht angegeben werden. So ist [DllImport] beispielsweise äquivalent zu [DllImportAttribute], der tatsächliche Name des Attributs in .NET Framework lautet jedoch DllImportAttribute.

Siehe auch

Konzepte

C#-Programmierhandbuch

Referenz

Reflektion (C#-Programmierhandbuch)

Attribute (C#-Programmierhandbuch)

Auflösen der Mehrdeutigkeit von Attributzielen (C#-Programmierhandbuch)

Erstellen benutzerdefinierter Attribute (C#-Programmierhandbuch)

Zugriff auf Attribute mit Reflektion (C#-Programmierhandbuch)

Attribute

System.Reflection