Domanda

In Java, posso effettuare le seguenti operazioni: (assumere Subclass estende Base):

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

Qual è l'equivalente in C # .NET? Non v'è alcun ? extends parola chiave a quanto pare, e questo non funziona:

List<Base> aList = new List<Subclass>();
È stato utile?

Soluzione

In realtà c'è un equivalente (o quasi), la parola chiave where. Io non so come "vicino" che è. Ho avuto una funzione avevo bisogno di fare qualcosa di simile per.

Ho trovato un href="http://msdn.microsoft.com/en-us/library/ms379564%28v=vs.80%29.aspx#csharp_generics_topic4" rel="noreferrer"> pagina su di esso.

Non so se si può fare questo in linea per una variabile, ma per una classe che si possa fare:
public class MyArray<T> where T: someBaseClass
o per una funzione
public T getArrayList<T>(ArrayList<T> arr) where T: someBaseClass

Non ho visto sulla pagina, ma utilizzando il where parola chiave potrebbe essere possibile per una variabile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top