C# のコンストラクター型推論の欠如: 詳細
C# の堅牢な型推論システムは、ジェネリック メソッドに恩恵をもたらし、特にコンストラクターの型推論を省略します。 この記事では、この省略の背後にある理由を探ります。
概念的なハードル
コンストラクターの型推論の実装は一見簡単そうに見えますが、オーバーロードの解決にはかなりの複雑さが伴います。 ステートメント new Foo(bar)
では、現在のスコープ内でさまざまな汎用パラメーターを持つ複数の Foo
タイプが検出される可能性があります。 最も適切なコンストラクターを決定するには、型推論メカニズムを大幅に修正する必要があります。 下位互換性を維持することは問題をさらに複雑にし、非ジェネリック型コンストラクターの優先順位付けを必要とします。
実際的なトレードオフ
明らかな利点にもかかわらず、コンストラクター型推論の実装には多額の開発コストがかかります。 C# 開発者は、他の機能の優先順位と比較して、潜在的な利点を慎重に評価する必要があります。 さらに、すぐに利用できるファクトリー パターンは実行可能な代替手段を提供し、この特定の機能に対する認識されている必要性を軽減します。
歴史的背景
度重なる提案にもかかわらず、コンストラクター型推論は一貫して優先順位が低いままです。 複雑な設計上の課題と効果的な回避策の存在により、これまでその導入が妨げられてきました。
ステータス更新
C# 6 用に検討されましたが、コンストラクターの型推論は最終的に最終仕様から除外されました。
以上がC# がコンストラクターの型推論をサポートしないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。