内容的には今更感満載ですが(5年前に書け) 普段割と意識してないからなのか意外とちゃんと答えられない(かった)ので、 少し書いてみることにしようと…
ほんとのきっかけは、ここで話題になったから
まず、簡単に、適当な(言語仕様的な)共変性の例は↓な感じでしょうか?
Genericなinterfaceの型パラメータに「out」をつけると、 型パラメータがUpCastな代入ができるって感じの奴です。
なぜこれが話題になったのか? それは、例示されていたサンプルコードが、(言語仕様としての)共変性を使ってなかったから! そのまま引用すると著作権的な何かがあるかもなので、似たようなコードを書きます
こんな感じです。
これだと確かにGetの実装がサブクラスの型を返しているので、共変性的な事は行われているんですが、
IRepository
久しぶりのblogで適当な文章を公開するという暴挙!!