Die Beschränkung von C# auf generische Attribute verstehen
C# verbietet die Verwendung generischer Typen als Attribute. Zum Beispiel der folgende Code:
<code class="language-csharp">public sealed class ValidatesAttribute<T> : Attribute { } [Validates<string>] public static class StringValidation { }</code>
Das Kompilieren schlägt fehl. Obwohl diese Einschränkung bekannt ist, ist die Begründung dafür weniger klar.
Die Common Language Infrastructure (CLI)-Spezifikation verbietet generische Attribute nicht ausdrücklich. In der C#-3-Spezifikation (Abschnitt 10.1.4) wird das Verbot jedoch eindeutig und ohne Begründung dargelegt. Die ECMA C# 2-Spezifikation bietet keine weitere Klarstellung.
Untersuchungen zeigen, dass die Entscheidung nicht auf technischen Einschränkungen beruhte, sondern eher auf einer Designentscheidung. Laut Eric Lippert (zusammengefasst) würde die durch die Unterstützung generischer Attribute hinzugefügte Komplexität die Vorteile überwiegen und zu einer komplexeren Sprache und einem komplexeren Compiler führen, ohne den Entwicklern einen wesentlichen Mehrwert zu bieten.
Das obige ist der detaillierte Inhalt vonWarum kann C# keine generischen Attribute haben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!