C#, struct, stack y heap...

29/09/2004 - 18:19 por faustino Dina | Informe spam
Hola,

Tengo una duda respecto a cómo C# maneja los struct. Según la documentación
estos son datos que se crean en el stack, en ves de los class que se crean
en el heap. Entonces ¿qué sucede cuando por ejemplo agregamos una variable
tipo struct a una colección?
Por ejemplo:

struct MyStruct
{
public int X;
}

MyStruct s;

ArrayList list = new ArrayList();
list.Add(s);

En C/C++ meter en una colección global una dirección del heap puede conducir
a un error grave. Pero ¿y en C# cómo funciona? En este caso list qué es lo
que almacena? la struct, la referencia al stack o clona s en el heap y
almacena la referencia del heap en la colección?

Gracias
Faustino


Faustino Dina
If my email address starts with two 'f'
drop the first 'f' when mailing me.

Preguntas similare

Leer las respuestas

#1 David Salgado,MVP
29/09/2004 - 19:17 | Informe spam
Al añadir una struct a un array list, se hace un Boxing de
la extructura al tipo de datos object ( que es lo que contiene el
arraylist ). Para que pueda hacerse esto, el CLR clona el tipo valor en el
heap de modo que
queden alineados con el tipo System.Object.

Espero que sirva :D

David Salgado

"faustino Dina" wrote in message
news:%
Mostrar la cita
#2 Pedro Luna Montalvo, MVP
30/09/2004 - 00:15 | Informe spam
En otras palabras, los tipos por valor guardan sus datos en el stack.

Por el contrario, los tipos por referencia guardan siempre sus datos en el
heap, aun cuando los campos del mismo sean de tipo por valor.

Saludos
Pedro Luna, MVP
Gye, Ecu

"David Salgado,MVP" escribió en el mensaje
news:
Mostrar la cita
crean
Mostrar la cita
variable
Mostrar la cita
lo
Mostrar la cita
Ads by Google
Search Busqueda sugerida