Para el CLR, out y ref son idénticos (generan los mismos metadatos y el mismo código IL), pero el compilador de C# los trata de manera distinta.
Esa distinción se basa en que, si usamos out en un parámetro de un método, no estamos obligados a inicializar el objeto antes de la llamada al método. En cambio si usamos ref, antes de la llamada al método debemos inicializar el valor del parámetro.
Otro punto a tener en cuenta es que no podemos sobrecargar un método en el que la sobrecarga difiera sólo en out y ref, ejemplo:
static void Suma(out Int32 n) { }
static void Suma(ref Int32 x) { }
Este caso provocaría un error de tipo 'Suma' cannot define overloaded methods that differ only on ref and out.
Suscribirse a:
Enviar comentarios (Atom)
1 comentario:
Supongo que el libro te explicará el motivo.
No sé porque decidieron ignorar los modopt en c# y demás, pero se pueden dar problemas de ese tipo al usar componentes creados en c++/cli.
mercero.
Publicar un comentario