>백엔드 개발 >C++ >C#에 일반 특성을 가질 수 없는 이유는 무엇입니까?

C#에 일반 특성을 가질 수 없는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-18 22:42:12379검색

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

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