name metatags keywords etiquetas etiqueta ejemplos creador c# unsafe

c# - metatags - ¿Cuál es la diferencia entre hacer referencia a un valor utilizando un puntero y una palabra clave de referencia?



meta tags seo (1)

La palabra clave ref actúa como un puntero, pero está aislada de los cambios en la ubicación real del objeto en la memoria. Un puntero es una ubicación específica en la memoria. Para los objetos recolectados en la basura, este puntero puede cambiar, pero no si utiliza la instrucción fixed para evitarlo.

Deberías cambiar esto:

SquarePtrParam(&value);

a esto:

fixed (int* pValue = &value) { SquarePtrParam(pValue); }

para asegurarse de que el puntero continúe apuntando a los datos int que espera.

http://msdn.microsoft.com/en-us/library/f58wzh21.aspx

Tengo el siguiente código:

class Program { private unsafe static void SquarePtrParam(int* input) { *input *= *input; } private static void SquareRefParam(ref int input) { input *= input; } private unsafe static void Main() { int value = 10; SquarePtrParam(&value); Console.WriteLine(value); int value2 = 10; SquareRefParam(ref value2); Console.WriteLine(value2); //output 100, 100 Console.ReadKey(); } }

¿Cuál es la diferencia entre pasar un puntero y una palabra clave ref como parámetro en el método?