問題タブ [covariance]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java でのオーバーロードとオーバーライドの両方の場合に共変性と反変性を示す関数の例を教えてください。
Java における共分散と反分散の良い例を示してください。
c# - インターフェイスのメソッドを実装する際に、「共分散」と「反分散」の概念が適用されるのはなぜですか?
ユースケースは次のようなものです:
ここで私の質問は、Funda の Covariance と Contravariance を考慮すると、Clone() メソッドの戻り値の型として "SomeClass(As it is distributed from object)" を使用できないのはなぜですか?
このマイクロソフトの実装の背後にある理由を誰か説明してもらえますか????
c# - C# (4.0) がジェネリック クラス型で共変性と反変性を許可しないのはなぜですか?
その制限の本当の理由は何ですか?しなければならなかったのはただの仕事ですか?概念的に難しいですか?無理ですか?
確かに、フィールドは常に読み書き可能であるため、型パラメーターをフィールドで使用することはできません。でもそれじゃ答えにならないよね?
この質問の理由は、私が C# 4 のバリアンス サポートに関する記事を書いているためであり、それがデリゲートとインターフェイスに制限されている理由を説明する必要があると感じています。立証責任を逆転させるだけです。
更新: Eric が例について尋ねました。
これはどうですか(それが理にかなっているのかどうかはまだわかりません:-))
それを 1 つのクラスに持つ理由は、クラス自体に保持されているキャッシュである可能性があります。また、異なる種類のペットに同じ名前を付けないでください。
ところで、これはC# 5.0 のオプションの型パラメーターにつながります :-)
更新 2: CLR と C# がこれを許可する必要があると主張しているわけではありません。何がそれにつながったのかを理解しようとしているだけです。
c# - C#4.0 RC、Silverlight4.0RC共分散
C#4.0を使用してSilverlight4アプリケーションを開発しようとしています。私はこのようなケースがあります:
他の場所:
そして、私が問題を抱えている使用法:
ジェネリック型は「不変」だったので、C#3.0ではこれは不可能だったと思います。しかし、これはジェネリックテクノロジーの新しい共分散によってC#4.0で可能だと思いましたか?
私が理解しているように、C#4.0では、分散をサポートするために多くの一般的なインターフェイス(IEnumerableなど)が変更されています。この場合、Foo
共変になるために私のクラスは何か特別なことをする必要がありますか?
また、Silverlight 4(RC)では共分散がサポートされていますか?
java - Generics : リストはリストと同じです?
extends
Java Generics のキーワードを理解しようとしています。
List<? extends Animal>
IS Aに任意のオブジェクトを詰め込むことができることを意味しList
ます Animal
次に、次も同じことを意味しません。
誰かが上記の2つの違いを知るのを手伝ってもらえますか? extends
ここでは冗長に聞こえます。
ありがとう!
generics - C#3.0でジェネリック型の共分散を実現する方法はありますか?
これはC#4.0で導入されましたが、C#3.0でこれを実現する方法はありますか?
たとえば、次のコードについて考えてみます。
User<T>
ここで、を保存できるUser<Derived1>
リストを作成したいのUser<Derived2>
ですが、次のコードはC#3.0でコンパイルできません。
何か案は?
c# - ジェネリックメソッドの型パラメータを部分的に指定する方法
以下のような拡張メソッドがあります。
現在、次の方法で使用できます。
これはかなり問題なく動作しますが、2 番目の型パラメーターは非常に厄介です。C# 4.0 で GetValueAs を書き直すことは可能ですか? メソッドがさまざまな種類の文字列キー辞書に適用可能であり、呼び出しコードで 2 番目の型パラメーターを指定する必要がありません。つまり、使用します。
たは少なくとも次のようなものれ以外のp>java - Javaジェネリック共分散
次の記事を理解するのに問題があります: http ://www.ibm.com/developerworks/java/library/j-jtp01255.html
下、
ジェネリックは共変ではありません
著者は次のように述べています。
lnはリストであるため、それにFloatを追加することは完全に合法のようです。しかし、lnがliでエイリアス化されている場合、liの定義に暗黙的に含まれている型安全性の約束が破られます。これは整数のリストであるため、ジェネリック型を共変にすることはできません。
「lnがliでエイリアスされた場合」と書かれている部分がわかりません。作者はエイリアスとはどういう意味ですか?(参照?)。引用された行の上のコードスニペットは、Javaで何が違法であり、なぜではないかを示しているようです。誰かが例を挙げて説明できれば、私にとって非常に役に立ちます。前もって感謝します。
c# - 共分散と反分散の実世界の例
現実の世界で共分散と反分散をどのように使用するかを理解するのに少し苦労しています。
これまでに見た唯一の例は、同じ古い配列の例です。
他の場所で使用されているのを見ることができれば、開発中に使用できる例を見るといいでしょう.