Heim > Backend-Entwicklung > C++ > Warum kann C# keine generischen Attribute haben?

Warum kann C# keine generischen Attribute haben?

Patricia Arquette
Freigeben: 2025-01-18 22:42:12
Original
377 Leute haben es durchsucht

Why Can't C# Have Generic Attributes?

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage