C# のジェネリック属性の制限: 説明のつかない謎
C# 属性内でジェネリック型を使用しようとすると、不可解なコンパイル時エラーが発生します。 例:
<code class="language-csharp">[Validates<string>] public static class StringValidation { // ... }</code>
これは、そのような使用が許可されている Java などの言語とは対照的です。 ただし、C# ではジェネリック属性型を断固として禁止しています。この正確な理由はまだ不明です。
ECMA C# 2 および 3 の仕様では、この制限について何の説明もなく言及されています。 元 Microsoft 開発者で C# 言語設計者の Eric Lippert 氏は、文書化された具体的な根拠はないと示唆しています。 この決定は、言語とコンパイラの単純さを優先し、明らかに価値の高い機能に開発努力を集中させることに起因すると考えられます。
したがって、C# でのジェネリック属性型の禁止は、C# の注目に値する、潜在的に制限的な言語の特徴であり、明確で公的に利用できる正当な理由が欠けています。
以上がC# でジェネリック属性型が許可されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。