1. ホーム
  2. c#

C#がJavaの<? extends Base>に相当するジェネリックスを発表

2023-10-01 13:52:38

質問

Javaで、以下のようなことができる。(仮に Subclass が拡張する Base ):

ArrayList<? extends Base> aList = new ArrayList<Subclass>();

C# .NETでこれに相当するものはありますか?この場合 ? extends キーワードはないようで、これは動作しません。

List<Base> aList = new List<Subclass>();

どのように解決するのですか?

実は、これと同じようなもの(のようなもの)があります。 where というキーワードがあります。私はそれがどのように "close"であるかは知りません。私は似たようなことをする必要がある関数がありました。

を見つけたのですが msdnページ を見つけました。

変数の場合はインラインでできるかどうか分かりませんが、クラスの場合はできます。

public class MyArray<T> where T: someBaseClass

または関数の場合

public T getArrayList<T>(ArrayList<T> arr) where T: someBaseClass

ページでは見かけませんでしたが、このように where キーワードを使用すると、変数として可能かもしれません。