ホームページ > バックエンド開発 > C++ > C# がジェネリック属性を持てないのはなぜですか?

C# がジェネリック属性を持てないのはなぜですか?

Patricia Arquette
リリース: 2025-01-18 22:42:12
オリジナル
327 人が閲覧しました

Why Can't C# Have Generic Attributes?

ジェネリック属性に対する C# の制限を理解する

C# では、ジェネリック型を属性として使用することを禁止しています。 たとえば、次のコード:

<code class="language-csharp">public sealed class ValidatesAttribute<T> : Attribute
{

}

[Validates<string>]
public static class StringValidation
{

}</code>
ログイン後にコピー

はコンパイルに失敗します。 この制限はよく知られていますが、その背後にある理由はあまり明確ではありません。

共通言語インフラストラクチャ (CLI) 仕様では、汎用属性を明示的に禁止していません。 ただし、C# 3 仕様 (セクション 10.1.4) では、正当な理由なく禁止することが明確に述べられています。 ECMA C# 2 仕様では、これ以上の明確な説明はありません。

調査によると、この決定は技術的な制約に基づいたものではなく、設計上の選択に基づくものでした。 Eric Lippert 氏 (要約) によると、汎用属性をサポートすることによって追加される複雑さが利点を上回り、開発者に実質的な価値を提供することなく、より複雑な言語とコンパイラをもたらすことになります。

以上がC# がジェネリック属性を持てないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート