>백엔드 개발 >C++ >C#에서 일반 유형이 특성 기본 유형으로 허용되지 않는 이유는 무엇입니까?

C#에서 일반 유형이 특성 기본 유형으로 허용되지 않는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-18 22:57:10885검색

Why Are Generic Types Not Allowed as Attribute Base Types in C#?

C#이 일반 유형을 속성 기반으로 제한하는 이유

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.