-2

次の行の同等のC#コードを探しています

private List<? extends HotSpot> hotSpots;

どんな助けでも大歓迎です。

4

2 に答える 2

7

必要なものに応じて、おそらく次のいずれかを探しています。

public class MyClass
{
    private IList<HotSpot> hotSpots;
}

または使用してwhere

public class MyClass<T> where T : HotSpot
{
    private IList<T> hotSpots;
}
于 2013-08-16T20:50:33.633 に答える
1

機能的には、最も近いのは次のとおりです。

IEnumerable<HotSpot> hotSpots;

列挙型の実際の型が である場合、そのIListようElementAt()なものは O(1) になります。

.NET 4.5 以降では、以下も使用できます。

IReadOnlyList<HotSpot> hotSpots;

List.AsReadOnly()通常のリストをラップするために使用します。

ジェネリックの分散に対する .NET のアプローチでは、特定のインターフェイスを共変または反変のいずれかにできるため、ジェネリック型パラメーターを戻り値としてのみ、または引数リストでのみ定義できるようになります。(コンパイラが各式でこれらのチェックを行うJavaとは対照的に。)私の推測では、C#は具体化を使用してジェネリックを実装List<out T>しており、型システムには具体的な型が存在できないというのが私の推測です。

于 2013-08-16T22:41:27.343 に答える