問題タブ [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.

0 投票する
3 に答える
45363 参照

java - Java でのオーバーロードとオーバーライドの両方の場合に共変性と反変性を示す関数の例を教えてください。

Java における共分散と反分散の良い例を示してください。

0 投票する
6 に答える
975 参照

c# - インターフェイスのメソッドを実装する際に、「共分散」と「反分散」の概念が適用されるのはなぜですか?

ユースケースは次のようなものです:

ここで私の質問は、Funda の Covariance と Contravariance を考慮すると、Clone() メソッドの戻り値の型として "SomeClass(As it is distributed from object)" を使用できないのはなぜですか?

このマイクロソフトの実装の背後にある理由を誰か説明してもらえますか????

0 投票する
3 に答える
5068 参照

c# - C# (4.0) がジェネリック クラス型で共変性と反変性を許可しないのはなぜですか?

その制限の本当の理由は何ですか?しなければならなかったのはただの仕事ですか?概念的に難しいですか?無理ですか?

確かに、フィールドは常に読み書き可能であるため、型パラメーターをフィールドで使用することはできません。でもそれじゃ答えにならないよね?

この質問の理由は、私が C# 4 のバリアンス サポートに関する記事を書いているためであり、それがデリゲートとインターフェイスに制限されている理由を説明する必要があると感じています。立証責任を逆転させるだけです。

更新: Eric が例について尋ねました。

これはどうですか(それが理にかなっているのかどうかはまだわかりません:-))

それを 1 つのクラスに持つ理由は、クラス自体に保持されているキャッシュである可能性があります。また、異なる種類のペットに同じ名前を付けないでください。

ところで、これはC# 5.0 のオプションの型パラメーターにつながります :-)

更新 2: CLR と C# がこれを許可する必要があると主張しているわけではありません。何がそれにつながったのかを理解しようとしているだけです。

0 投票する
2 に答える
850 参照

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)では共分散がサポートされていますか?

0 投票する
3 に答える
35881 参照

java - Generics : リストはリストと同じです?

extendsJava Generics のキーワードを理解しようとしています。

List<? extends Animal>IS Aに任意のオブジェクトを詰め込むことができることを意味しListます Animal

次に、次も同じことを意味しません。

誰かが上記の2つの違いを知るのを手伝ってもらえますか? extendsここでは冗長に聞こえます。

ありがとう!

0 投票する
2 に答える
589 参照

generics - C#3.0でジェネリック型の共分散を実現する方法はありますか?

これはC#4.0で導入されましたが、C#3.0でこれを実現する方法はありますか?

たとえば、次のコードについて考えてみます。

User<T>ここで、を保存できるUser<Derived1>リストを作成したいのUser<Derived2>ですが、次のコードはC#3.0でコンパイルできません。

何か案は?

0 投票する
4 に答える
2590 参照

c# - ジェネリックメソッドの型パラメータを部分的に指定する方法

以下のような拡張メソッドがあります。

現在、次の方法で使用できます。

これはかなり問題なく動作しますが、2 番目の型パラメーターは非常に厄介です。C# 4.0 で GetValueAs を書き直すことは可能ですか? メソッドがさまざまな種類の文字列キー辞書に適用可能であり、呼び出しコードで 2 番目の型パラメーターを指定する必要がありません。つまり、使用します。

たは少なくとも次のようなものれ以外のp>

0 投票する
4 に答える
1128 参照

c# - C# キャスト Fooフーへ

does anyone know if it is possible to cast a generic type with a certain type parameter (e.g. Bar) to the same generic type with the type parameter being a base type of Bar (such as object in my case). And, if

does anyone know if it is possible to cast a generic type with a certain type parameter (e.g. Bar) to the same generic type with the type parameter being a base type of Bar (such as object in my case). And, if it is possible, how would it be done?

What I want to do is have a collection of Foo<object> but be able to add Foos with more specific type arguments.

Thanks


Are you sure that the control whose child controls you are parsing actually directly contains Label controls? I suspect that it is a child of the main control that is hosting the labels, in which case, you need to recursively search through the UI tree to find the labels.

Something like:

0 投票する
3 に答える
12906 参照

java - Javaジェネリック共分散

次の記事を理解するのに問題があります: http ://www.ibm.com/developerworks/java/library/j-jtp01255.html

下、

ジェネリックは共変ではありません

著者は次のように述べています。

lnはリストであるため、それにFloatを追加することは完全に合法のようです。しかし、lnがliでエイリアス化されている場合、liの定義に暗黙的に含まれている型安全性の約束が破られます。これは整数のリストであるため、ジェネリック型を共変にすることはできません。

「lnがliでエイリアスされた場合」と書かれている部分がわかりません。作者はエイリアスとはどういう意味ですか?(参照?)。引用された行の上のコードスニペットは、Javaで何が違法であり、なぜではないかを示しているようです。誰かが例を挙げて説明できれば、私にとって非常に役に立ちます。前もって感謝します。

0 投票する
9 に答える
74932 参照

c# - 共分散と反分散の実世界の例

現実の世界で共分散と反分散をどのように使用するかを理解するのに少し苦労しています。

これまでに見た唯一の例は、同じ古い配列の例です。

他の場所で使用されているのを見ることができれば、開発中に使用できる例を見るといいでしょう.