2010-11-20 15 views
5

¿Cómo puedo traducir el código de Java:ArrayList: ayuda a traducir de Java a C#

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

a C#? ¿Y qué significa la palabra clave final en Java? ¿Qué analogía hay en C#? Soy novato en C# y Java y necesito ayuda :)

Respuesta

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

IList<T> es una interfaz implementada por la clase de colección genérica List<T>.

final tiene diferentes significados en Java dependiendo de su contexto:

  • final en una clase o método es como sealed en C#
  • final en una variable es como readonly en C#.

El equivalente de final en C# se trata en detalle here.

+0

Pero, ¿cuán similares son las implementaciones de C# List a Java ArrayList? ¿Qué está respaldando la interfaz? – Snekse

+0

@Snekse: esa es una pregunta diferente, que podrías preguntar en el sitio si realmente necesitas una respuesta –

1

Es similar a lo que has escrito.

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

y 'final' en Java es' const' en C# –

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

El List interfaz Java es análoga a la IList<T> interfaz .NET. El tipo de hormigón ArrayList es análogo al tipo .NET List<T>.

final es un poco más complicado. En este caso (declaración de campo + inicializador), el más cercano sería readonly. Por otro lado, a partir de la versión actual, no hay forma de marcar una variable local como final en C#. (Fuera de tema, final en el contexto de las constantes de tiempo de compilación = const. En el contexto de "no se puede sobrescribir/heredar más" = sealed).

EDITAR: Para responder a su pregunta acerca de qué significa "final", normalmente se usa para indicar tipo de inmutabilidad; ese algo no se puede modificar ni anular. ¿Qué tipo de mutabilidad es realmente prevenido con ese modificador y sus análogos C# depende del contexto y es difícil de describir sin entrar en detalles.

0

Final en Java significa que después de la primera asignación a una variable final ya no puede cambiarla. No estoy seguro de cuál es el equivalente en C#.

El código es el mismo que dicho AS-CII pero yo lo hubiera escrito como

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