現在、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 中国語 Web サイトの他の関連記事を参照してください。