C# の型推論は、コンパイラーが初期化から型を推定できるようにすることで、変数の宣言を簡素化します。 ただし、この便利な機能はコンストラクターには存在しないため、その省略について疑問が生じています。
コンストラクターの型推論の欠如は、本質的に根本的な設計上の欠陥ではありません。 利用可能なコンストラクターを分析し、オーバーロードを解決し、「最適な」一致を選択することで実装できます。 課題は、さまざまな型とさまざまなジェネリック パラメーター間でコンストラクターを比較する複雑さにあります。
主な障害は、潜在的な利点と導入コストとのトレードオフです。 この機能を追加するには便利ですが、多大な開発努力が必要です。 さらに、オーバーロードの解決に曖昧さやエラーが生じる危険性があります。
この制限にもかかわらず、開発者はファクトリ パターンを使用して同様の結果を達成できます。 専用のファクトリ クラスがオブジェクトの作成を処理し、必要に応じて型を指定します。 例:
<code class="language-csharp">public class MyTypeFactory { public static MyType<T> Create<T>(T value) { return new MyType<T>(value); } }</code>
これにより、オブジェクトの作成中に型推論が可能になります:
<code class="language-csharp">var myObj = MyTypeFactory.Create(42);</code>
コンストラクターの型推論は繰り返し提案されていますが、他の機能を優先するため実装は保留中です。 C# 6 向けに一時的に検討されましたが、最終的には開発中に除外されました。
便利ではありますが、C# にコンストラクターの型推論がないことは、実用的な懸念とファクトリ パターンのような回避策が利用可能であることに起因しています。 現在、開発者はオブジェクトの初期化に明示的な型宣言または代替戦略を使用する必要があります。
以上がC# にはコンストラクターの型推論がないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。