2

次のことを試しましたが、結果はインターフェイス名にあります。

interface NotOK<out T>
{
    bool TryDequeue(out T t);
}

interface OK<out T>
{
    T TryDequeue(out bool b);
}

ドキュメントには次のように書かれています。

C# のrefおよびoutパラメーターはバリアントにすることはできません。

refが共変 (または反変) にならない理由は明らかですが、メソッドの結果と同じように、 outパラメーターが共変にならないのはなぜでしょうか?

それはコンパイラの制限ですか、それともパラメーターが実際に共分散制約を破る可能性がありますか?

4

2 に答える 2