현재 C#에는 확장 속성에 대한 기본 지원이 부족합니다. 즉, 소스 코드를 수정하지 않고는 기존 유형에 직접 속성을 추가할 수 없습니다.
네이티브 확장 속성의 생략은 여러 가지 요인으로 인해 발생합니다. C# 디자인 팀은 이 기능의 우선순위를 지정하지 않았으며 이 기능을 구현하려면 컴파일러에 상당한 변경이 필요하여 잠재적으로 버그나 성능 병목 현상이 발생할 수 있습니다.
직접 지원은 불가능하지만 해결 방법은 있습니다. TypeDescriptor
을 사용하면 런타임에 속성을 연결할 수 있지만 이는 표준 속성 구문에서 벗어나고 제한 사항이 있습니다. 타사 도구인 PostSharp 또는 Mono.Cecil은 코드 또는 IL(중간 언어)을 수정하여 컴파일 후 속성 추가를 제공합니다. 그러나 이는 컴파일러 최적화를 방해할 수 있습니다.
.NET 커뮤니티에서는 확장 속성에 대해 적극적으로 논의합니다. 향후 C# 릴리스에 포함될 가능성이 있습니다.
확장 속성에 대한 구문은 구현될 경우 다음과 유사할 수 있습니다.
<code class="language-csharp">// Extend the string class with a 'WordCount' property public extension string : IWordCount { public int WordCount { get; } }</code>
이것은 모든 유형에 속성을 추가하는 깔끔한 방법을 제공합니다.
확장 속성의 이점은 분명합니다.
현재 C#에는 기본 확장 속성 지원이 부족하지만 실행 가능한 대안이 있으며 향후 버전에는 많은 요청을 받은 이 기능이 포함될 수 있습니다. 이를 채택하면 언어의 유연성과 코드 구성이 크게 향상됩니다.
위 내용은 C#이 기본적으로 확장 속성을 지원하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!