次のことを試しましたが、結果はインターフェイス名にあります。
interface NotOK<out T>
{
bool TryDequeue(out T t);
}
interface OK<out T>
{
T TryDequeue(out bool b);
}
ドキュメントには次のように書かれています。
C# のrefおよびoutパラメーターはバリアントにすることはできません。
refが共変 (または反変) にならない理由は明らかですが、メソッドの結果と同じように、 outパラメーターが共変にならないのはなぜでしょうか?
それはコンパイラの制限ですか、それともパラメーターが実際に共分散制約を破る可能性がありますか?