重複の可能性:
C# 4.0 のクラスに一般的な差異がないのはなぜですか?
新人プログラマーとして、.NET 4 のバリアンスについていくつか質問があります。それがどのように機能するかということではなく、特定のものがバリアントでない理由と、他の人にとってこれが役立つかどうかについてです。
質問1:
.NET 4 では、インターフェイスとデリゲートが共変/反変になる可能性があることは知っていますが、なぜクラスではないのでしょうか? だから、質問1:
List(of BaseClass) = List(of DerivedClass)
これはどういうわけか安全ではありませんか?これは役に立ちませんか?
質問2:
質問 2 は質問 1 から続きますが、分散よりも署名を扱う場合があります。MustOverride メンバーを持つ MustInherit クラスがあるとします。
Public MustInherit Class TestBase
Public MustOverride Property SomeClass as BaseClass
End Class
派生クラスで、SomeClass をオーバーライドして BaseClass の派生クラスを返すことができないのはなぜですか? これは危険ですか?署名が継承関係をチェックしていないだけですか?
Public Class TestSpecific
Inherits TestBase
Public Overrides Property SomeClass as DerivedClass
End Class
これが.NET 4で許可されていない理由についての洞察をいただければ幸いです。