Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: DanteInfernum en 25 Agosto 2013, 23:54 pm



Título: Quiero ver el código del método array.Clone() de C#
Publicado por: DanteInfernum en 25 Agosto 2013, 23:54 pm
Me interesaría estudiar qué es lo que realmente hace el método Clone, paso a paso. Para esto, he estado intentando verlo a través de Reflector.

Lo que obtengo es lo siguiente:

Código:
public object Clone()
{
    return base.MemberwiseClone();
}

Veo que este método invoca a otro, o sea, a MemberwiseClone().
Lo busco:

Código:
[MethodImpl(MethodImplOptions.InternalCall), SecuritySafeCritical]
protected extern object MemberwiseClone();

Y acá directamente ya no entiendo más nada...
¿Por qué no veo el método expresado sentencia a sentencia, de la misma forma que el resto?

 


Título: Re: Quiero ver el código del método array.Clone() de C#
Publicado por: Juan. en 26 Agosto 2013, 00:27 am
Hay cosas que no se pueden ver, esta por ejemplo o como se hace un .read/.next

Son demasiado internas y yo creo que no está programado en C#, sino en C o en ensamblador directamente


Título: Re: Quiero ver el código del método array.Clone() de C#
Publicado por: raul338 en 26 Agosto 2013, 05:15 am
El codigo .net pasa a ser transformado a codigo CIL/MSIL (http://es.wikipedia.org/wiki/Common_Intermediate_Language) y es ahí donde va toda la magia :P capaz las llamadas van ahí


Título: Re: Quiero ver el código del método array.Clone() de C#
Publicado por: DanteInfernum en 26 Agosto 2013, 21:59 pm
Ok, gracias por sus respuestas.
Era nada más por simple curiosidad. Hace poco descubrí el método Clone. Hasta ahora, cuando necesitaba por ejemplo copiar una matriz en otra, lo implementaba yo mismo al método, y me preguntaba si C# haría algo parecido a lo que yo hago.


Título: Re: Quiero ver el código del método array.Clone() de C#
Publicado por: Juan. en 27 Agosto 2013, 16:05 pm
No, el clone de C# y de Java lo que hacen es una copia directa en memoria de los valores, vamos lo que es copiar el contenido de un puntero de toda la vida y seguro que no tiene nada que ver porque imagino que usaras una estructura iterativa como while o for


Título: Re: Quiero ver el código del método array.Clone() de C#
Publicado por: DanteInfernum en 27 Agosto 2013, 18:53 pm
Sí, tengo entendido que lo que hace Clone es crear un nuevo objeto idéntico al que estoy copiando. En cambio, lo que yo hacía era modificar los valores de una matriz ya existente mediante un for.