Compte tenu de cette classe:Est-ce qu'un ValueType est encadré lorsqu'il est déclaré comme faisant partie d'une classe?
public class Foo
{
public Int32 MyField;
}
Je suppose que le membre « MyField » n'est pas sur la pile de fil parce qu'il pourrait être accessible par plusieurs threads, il doit être sans aucun doute dans le tas managé, mais le fait que cela signifie il est emballé et déballé à chaque fois qu'il est utilisé?
Merci à l'avance
merci à tous! – vtortola
Je pense que de nombreuses explications sur la façon dont les types de valeur diffèrent des types de référence peuvent induire le lecteur en erreur, car ils ont tendance à dire qu'il existe des types de valeur sur la pile; ce qui n'est vraiment le cas que si vous parlez de variables de type valeur déclarées dans une méthode. Je pensais que la réponse de James Curran avait une bonne suggestion d'utiliser les termes "Over Here" et "Over There" pour décrire l'emplacement de la mémoire allouée pour un objet plutôt que "Dans la pile" et "Dans le tas": http://stackoverflow.com/questions/3790436/where-are-value-types-stored-in-c-generic-collections/3790468#3790468 –
Et même lorsqu'une variable de type valeur est déclarée dans une méthode, elle peut être déplacée vers la tas pour un certain nombre de raisons. Voir «La vérité sur les types de valeur» d'Eric Lippert. http://blogs.msdn.com/b/ericlippert/archive/2010/09/30/the-truth-about-value-types.aspx –