2010-11-20 18 views
5

Come posso tradurre questo codice Java:ArrayList: aiuto per tradurre da Java a C#

private List<MPoint> classes = new ArrayList<MPoint>(); // MPoint is my own class 

a C#? E cosa significa parola chiave finale in Java? Quale analogo c'è in C#? Sono novizio in C# e Java e ho bisogno di aiuto :)

risposta

7
private IList<MPoint> classes = new List<MPoint>(); 

IList<T> è un'interfaccia implementata dalla classe insieme generico List<T>.

final ha significati diversi in Java a seconda del contesto:

  • final su una classe o un metodo è come sealed in C#
  • final su una variabile è come readonly in C#.

Equivalente di final in C# è discusso in dettaglio here.

+0

Ma quanto sono simili le implementazioni di C# List a Java ArrayList? Cosa sta supportando l'interfaccia? – Snekse

+0

@Snekse - questa è una domanda diversa, che potresti chiedere sul sito se hai davvero bisogno di una risposta –

1

È simile a quello che hai scritto.

List<MPoint> classes = new List<MPoint>(); 
+0

e 'final' in Java è' const' in C# –

4
private IList<MPoint> classes = new List<MPoint>(); 

L'interfaccia Java List è analoga all'interfaccia NET IList<T>. Il tipo di calcestruzzo ArrayList è analogo al tipo .NET List<T>.

final è un po 'più complicato. Nel questo caso (dichiarazione campo + inizializzatore), il più vicino sarebbe readonly. D'altra parte, a partire dalla versione attuale, non c'è modo di contrassegnare una variabile locale come final in C#. (Off-topic, final nel contesto delle costanti in fase di compilazione = const. Nel contesto di "impossibile eseguire l'override/ereditare ulteriormente" = sealed).

EDIT: Per rispondere alla tua domanda su cosa significa "finali", è normalmente utilizzato per indicare un tipo di immutabilità - che qualcosa non può essere ulteriormente modificato o sovrascritto. Che tipo di mutabilità è in realtà impedito con quel modificatore e il suo analogo C# dipende dal contesto ed è difficile da descrivere senza entrare nello specifico.

0

Final in Java significa che dopo il primo assegnamento a una variabile finale non è più possibile modificarlo. Non sono sicuro di quale sia l'equivalente in C#.

Il codice è lo stesso di detto AS-CII, ma io avrei scritto come

private IList<MPoint> classes = new List<MPoint>();