問題タブ [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 投票する
4 に答える
10065 参照

java - プログラミング言語の共分散と逆分散の違いは何ですか?

プログラミング言語理論における共変性と反変性の概念を誰かが説明できますか?

0 投票する
7 に答える
637 参照

c# - C#での継承-簡単な質問

複製

C#で、ListオブジェクトをList変数に格納できないのはなぜですか

これが私のコードです:

SampleDerivedはSampleBaseから派生しています

継承ロジックによれば、これを実行できるはずです。ただし、コンパイルされません。エラーは、SampleBaseを暗黙的にSampleDerivedタイプに変換できないことを示しています。何が得られますか?

私はc#2.0を使用しています

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

c# - c# 2.0 (BindingList) でのジェネリックとの共分散の欠如に対する解決策

設計上の質問です。ビジネス オブジェクトと、そこから派生した 5 つのビジネス オブジェクト タイプがあります。

また、メンバーとして BindingList を持つクラスも作成します。そこから派生した5つのクラスがあります。

ここでは共分散が機能しないため、コードの繰り返しを最小限に抑えるために設計をどのように構成しますか? もちろん、BindingList をチャックして DataTable を使用することもできます。その場合、問題は解消されます。

しかし、誰もが BindingList を絶賛しているので、皆さんがこれにどのようにアプローチするかを知りたいです。

解決策(Pavel Minaevの回答に基づく):

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

java - Java共分散

私はこれを理解するのに苦労しています。次のコードがあるとします。

割り当てによってコンパイル エラーが発生するのはなぜですか? エラーは次のようなものです。

共分散に関する私の理解によれば、メソッドは常にオブジェクトを含むgetMammals()a を返すため、割り当て可能である必要があります。私は何が欠けていますか?listMammal

0 投票する
7 に答える
22258 参照

c# - どうすれば ObservableCollection にキャストできますか

How can i cast

from ObservableCollection<TabItem> into ObservableCollection<object>

this doesnt work for me

(ObservableCollection

How can i cast

this doesnt work for me


Using classic SQL:

I've put the first "distinct" in square brackets since I'm unsure as to whether you wanted duplicates removed (remove either the brackets or the entire word). The second "distinct" should be left in just in case your DBMS doesn't optimize IN clauses.

It may be faster (measure, don't guess) with an left join along the lines of:

Same deal with the "[distinct]".

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

c# - 一般的な制約にもかかわらず C# の型変換エラーが発生する

クラス P の型パラメーター T に「A から継承する必要がある」という一般的な制約がある場合、最初の呼び出しは成功するが、2 番目の呼び出しはコメントに詳述されている型変換エラーで失敗するのはなぜですか。

List<T> 一般的な制約は、それが実際にあることを保証するべきではありませんICollection<A>か?

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

c# - 非ジェネリック型の相互/反変性のサポート?

C# チームが非ジェネリックの共変/反変をサポートしないことにしたのはなぜでしょうか。チームメンバーが答えるとは思わないので、質問はかなり主観的ですが、誰かが私 (およびバーバラ・リスコフ) に欠けている洞察を持っているかもしれません。

このサンプル インターフェイスを見てみましょう。

次の実装は失敗しますが、完全に安全です (インターフェイスに違反することなく、より具体的な型をいつでも返すことができます - C# ではなく、少なくとも理論的には)。

インターフェイスにセッターが含まれている場合、コードは当然安全ではありませんが、ジェネリックの場合と同様に、 out/in を使用して安全性を宣言することで指摘できるため、実装全体を制限する理由にはなりません。

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

c# - C#で共変性と反変性を使用するIList、これは可能ですか?

これは可能でしょうか?(2010年とは違うので、自分で試すことはできません、ごめんなさい)

正しければ、これを使用して、同じインターフェースで共変性と反変性を実際に実装できます。

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

c++ - 共分散を前方宣言する方法はありますか?

これらの抽象クラスがFooあり、Bar

ConcreteFooさらに、派生クラスとを持っていると仮定しConcreteBarます。foo()bar()メソッドの戻り型を次のように共変的に改良したいと思います。

ConcreteBar私たちの最愛のシングルパスコンパイラは、がから継承することを知らないため、これはコンパイルされません。Barしたがって、これConcreteBarは完全に合法的な共変リターン型です。プレーンフォワード宣言ConcreteBarも、コンパイラに継承について何も通知しないため、機能しません。

これは私が一緒に暮らさなければならないC++の欠点ですか、それとも実際にこのジレンマを回避する方法がありますか?