I this MSDN Magazine article, el autor (el énfasis es mío):¿El desempaquetado solo devuelve un puntero al valor dentro del objeto en caja en el montón?
Note que el boxeo siempre crea un nuevo objeto y copias los bits del valor sacó de la caja al objeto. Por otro lado, unboxing simplemente devuelve un puntero a los datos dentro de un objeto en caja: no se produce la copia de memoria . Sin embargo, es comúnmente el caso en que su código será porque los datos apuntados por la referencia sin caja se copiarán de todos modos.
Estoy confundido por la oración que he en negrita y la oración que sigue. De todo lo demás que he leído, incluido el this MSDN page, nunca antes había escuchado que el desempaquetado solo devuelve un puntero al valor en el montón. Tenía la impresión de que unboxing daría como resultado que tengas una variable que contenga una copia del valor en la pila, tal como comenzaste. Después de todo, si mi variable contiene "un puntero al valor en el montón", entonces no tengo un tipo de valor, tengo un puntero.
¿Alguien puede explicar lo que esto significa? ¿Estaba el autor en crack? (Hay al menos otro error evidente en el artículo). Y si esto es cierto, ¿cuáles son los casos en los que "su código hará que los datos señalados por la referencia unboxed se copien de todos modos"?
Me acabo de dar cuenta de que el artículo tiene casi 10 años, así que tal vez esto es algo que cambió muy temprano en la vida de .Net.
¡Ya veo! Gracias. –