Java では、次のことができます: ( Subclassextendsを想定Base):
ArrayList<? extends Base> aList = new ArrayList<Subclass>();
C# .NET で同等のものは何ですか? どうやらキーワードがなく? extends、これは機能しません。
List<Base> aList = new List<Subclass>();
Java では、次のことができます: ( Subclassextendsを想定Base):
ArrayList<? extends Base> aList = new ArrayList<Subclass>();
C# .NET で同等のものは何ですか? どうやらキーワードがなく? extends、これは機能しません。
List<Base> aList = new List<Subclass>();
実際には、同等の(一種の)whereキーワードがあります。どれだけ「近い」かわかりません。私は似たようなことをする必要がある機能を持っていました。
それに関するmsdnページを見つけました。
変数に対してこれをインラインで実行できるかどうかはわかりませんが、クラスの場合は実行できます:
public class MyArray<T> where T: someBaseClass
または関数の場合
public T getArrayList<T>(ArrayList<T> arr) where T: someBaseClass
ページには表示されませんでしたが、whereキーワードを使用すると、変数が可能になる可能性があります。
を調べてCovariance紹介Contravarianceし.Net 4.0ます。しかし、それはinterfaces今だけで動作します。
IEnumerable<Base> list = new List<SubClass>();
正確に同等のものはありません (型システムは型消去とすべてでまったく同じように機能しないため)、covariance と contravarianceinをout使用して、非常によく似た機能を得ることができます。