今回は分散に関する少し異なる質問です。
実験から、C# では仮想関数を反変関数でオーバーライドできないことがわかりました。もしそうなら、「適切なメソッドのオーバーロードが見つかりません」というメッセージが表示され続けるので、どうすればよいですか。そうでない場合、なぜですか?基本クラスが int の値が常に int になるように指定し、サブクラスがオブジェクトを取ることができる場合、どこに問題がありますか?
戻り値の型と同じで、オーバーライド シグネチャで共変でなければなりません
どの言語でこれを行うことができますか? (C++/Java 私はあなたを見ています) そして、彼らがあなたに使用させてくれるなら、どの型を変えますか? (戻り値の型/引数リストなど)
複数のオーバーライドを設定できますか? 署名が技術的に一意である限り、なぜそうしないのかわかりません。
C#/CLR がメソッド オーバーライド共分散/反分散をサポートしないのはなぜですか?
私はこれを読みましたが、どの質問にも答えがありません。私は一般的な差異について知っており、それが素晴らしいことを知っています。C# だけでなく、C# のメソッド シグネチャの分散についても知りたいです (つまり、これに限定されません)。存在しない場合は、これの確認と説明が必要です(実装の詳細ですか?私の型理論は間違っていますか?CLR/C#がたまたまこの特定の機能をサポートしていないだけですか?それは私が持っているものですか? CLR の実装に対処する必要がないため、特定の複雑な詳細がわからないため、考えたことはありませんか?)