> 백엔드 개발 > C++ > C#에서 일반 속성 유형을 허용하지 않는 이유는 무엇입니까?

C#에서 일반 속성 유형을 허용하지 않는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2025-01-18 22:51:12
원래의
286명이 탐색했습니다.

Why Doesn't C# Allow Generic Attribute Types?

C#의 일반 속성 제한: 설명

C#은 광범위한 사용자 정의를 제공하지만 특히 일반 속성 유형은 제외합니다. 이 제한은 다음과 같은 질문을 촉발합니다: 왜?

일반 유형 매개변수를 사용하여 사용자 정의 속성을 정의하려고 하면 다음과 같은 컴파일 시간 오류가 발생합니다.

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

[Validates<string>]
public static class StringValidation { }</code>
로그인 후 복사

공용 언어 인프라(CLI)는 일반 속성을 지원하지만 C#에서는 이를 특별히 허용하지 않습니다. 이는 CLI 제한이 아니라 내부 C# 디자인 선택입니다.

이 금지 사항의 정확한 이유를 정확히 찾아내는 것은 어렵습니다. C# 언어 사양은 명확한 설명을 제공하지 않습니다. 그러나 커뮤니티 토론과 전문가 의견은 여러 가지 가능성을 제시합니다.

한 가지 이론에서는 일반 속성 유형이 언어와 컴파일러에 불필요한 복잡성을 초래할 것이라고 가정합니다. 이 기능을 지원하려면 안정성과 성능을 유지하기 위해 추가적인 언어 메커니즘과 컴파일러 최적화가 필요합니다.

또 다른 관점은 일반 속성의 실제 적용이 제한되어 있고 개발 비용이 잠재적인 이점보다 크다는 것입니다. C# 디자이너는 다른 기능을 우선시했을 수도 있습니다.

전 C# 팀 멤버였던 Eric Lippert는 간결하게 설명했습니다. 제한적인 실제 가치가 있는 기능에 대해 언어와 컴파일러 모두에서 불필요한 복잡성을 피하기 위해 제한이 존재한다는 것입니다. 완전히 만족스럽진 않지만 이 통찰력은 C# 디자인 선택 뒤에 숨은 의사 결정 과정을 조명합니다.

위 내용은 C#에서 일반 속성 유형을 허용하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿