C#에서는 일반 유형을 속성 기본 유형으로 허용하지 않습니다. 아래와 같이 이를 시도하면 컴파일 시간 오류가 발생합니다.
<code class="language-csharp">public sealed class ValidatesAttribute<T> : Attribute { } [Validates<string>] public static class StringValidation { }</code>
C#의 광범위한 일반 지원에도 불구하고 이러한 제한은 많은 사람들에게 당혹감을 안겨줍니다.
CLI 사양에서는 일반 속성을 명시적으로 금지하지 않습니다. 그러나 직접 IL을 검사해 보면 창작이 가능한 것으로 나타났습니다. 이는 C# 언어 자체에서 발생하는 제한 사항을 나타냅니다.
다른 속성 제한 사항을 문서화했음에도 불구하고 C# 3 사양(섹션 10.1.4)이나 ECMA C# 2 사양 모두 이 금지 사항에 대한 명확한 설명을 제공하지 않습니다.
C# 커뮤니티의 주요 인물인 Eric Lippert는 이러한 제한이 언어와 컴파일러를 모두 단순화한다고 제안합니다. 일반적인 속성을 허용함으로써 얻을 수 있는 이점은 이로 인해 발생할 수 있는 잠재적인 복잡성에 비해 미미한 것으로 간주됩니다.
위 내용은 C#에서 일반 유형이 특성 기본 유형으로 허용되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!