Estoy buscando el equivalente C# de Java final
. ¿Existe?¿Pueden los parámetros ser constantes?
¿El C# tienen algo como lo siguiente:
public Foo(final int bar);
En el ejemplo anterior, bar
es una única variable de lectura y no se puede cambiar por Foo()
. ¿Hay alguna manera de hacer esto en C#?
Por ejemplo, tal vez tienen un método de largo que va a trabajar con x
, y
y z
coordenadas de un objeto (enteros). Quiero estar absolutamente seguro de que la función no altera estos valores de ninguna manera, con lo que corrompe los datos. Por lo tanto, me gustaría declararlos de manera solo lectura.
public Foo(int x, int y, int z) {
// do stuff
x++; // oops. This corrupts the data. Can this be caught at compile time?
// do more stuff, assuming x is still the original value.
}
duplicados de http://stackoverflow.com/questions/2125591/net-parameter-passing-by-reference-vs-by-value (y tiene una gran respuesta de Eric Lippert, por cierto) – casperOne
no creo su duplicado exacto. Esa pregunta es sobre la diferencia entre pasar por referencia y pasar por valor. Creo que Rosarch pudo haber usado un mal código de ejemplo para el punto que intentaba transmitir. –
@Rosarch: De lo que estoy entendiendo por la palabra "final", es que puedes hacer una acción nomore con el objeto, sea lo que sea. Entiendo que "final" aplicado a una clase sería la equivalencia de "sellado" en C#. ¿Pero cuál es el beneficio o el uso real de esta palabra clave "final" de todos modos? Lo he visto casi en cualquier lugar algún día en un código fuente de JAVA. –