Est Guid considérée comme une valeur de type ou de type de référence?
Guid sont créés à l'aide de la new
mot clé qui me fait penser que c'est un type de référence.
Est-ce correct?
Guid uid = new Guid();
Sont Guid stockées sur le tas?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez consulter la définition d'un Guid vous-même:
Ou vous pouvez tester de cette façon:
Les structures peuvent avoir des constructeurs, par exemple,
new DateTime(2012, 12, 23)
.Guid est un Type Valeur.
Voir MSDN. Notez que le Guid est un struct. Toutes les structures sont Types De Valeur.
Arrêter de penser que. Types de valeur peut avoir constructeurs aussi. C'est parfaitement légal, si étrange, pour dire
Qui est la même que l'attribution de zéro à x.
Nope.
Oui. Les guid sont également stockés sur la pile.
Noter que l'analyse ci-dessous suppose que la mise en œuvre de l'interface de ligne de commande Microsoft "bureau" ou "Silverlight" CLR en cours d'exécution sur Windows. Je n'ai aucune idée de ce que d'autres versions de la CLI faire, ce qu'ils font sur Mac, et ainsi de suite. Si vous avez besoin de savoir si un morceau de la mémoire est stockée sur la pile dans d'autres implémentations, vous devez demander à quelqu'un qui est un expert sur ces implémentations.
Un Guid est stocké sur la pile dans les circonstances suivantes:
(1) lorsque le Guid est un "temporaire" résultat d'un cours de calcul ou est utilisée comme argument d'une méthode. Par exemple, si vous avez un appel de la méthode M(nouveau Guid ()), puis le stockage temporaire pour le nouveau Guid est alloué sur la pile.
(2) lorsque le Guid est une variable locale qui est (a) n'est pas dans un bloc itérateur, (b) ne sont pas fermées, plus de extérieur variable d'une méthode anonyme ou une expression lambda.
Dans toutes les autres situations, le Guid n'est pas stockée dans la pile. Un Guid est stocké sur le tas lorsqu'il s'agit d'un champ d'un type de référence, un élément d'un tableau, d'un fermé-local d'une méthode anonyme ou une expression lambda, ou un local dans un bloc itérateur.
Un Guid peuvent également être stockés dans ni le tas GC, ni la pile. Un Guid peut être entièrement stockée dans une mémoire non managée, accessible via dangereux de l'arithmétique des pointeurs.
Je suis curieux de savoir pourquoi vous vous souciez tellement de savoir si les bits d'un guid qui sont sur la pile ou sur le tas. Quelle différence cela fait-il?
C'est un type de valeur.
http://msdn.microsoft.com/en-us/library/system.guid.aspx
C'est en fait Guid. Tous les types sont construits à l'aide de la
new
mot-clé. Vous pouvez identifier les types de référence des types de valeur par les si elles sont une classe, interface, ou délégué (tous les types de référence), ou un struct ou enum (valeur type).Sa valeur type, Voir l'exemple ci-dessous: