2009-02-24 10 views

Répondre

2

string est un type de référence immuable.

Etes-vous en train d'essayer de dire? Struct lui-même est un type de valeur mais il peut contenir un type de référence.

struct Refsample<T> where T : class 

Variable de type de valeur stockée dans la pile de mémoire, mais la variable de type de référence a une adresse de mémoire qui pointe vers le tas.

par exemple.

struct Refsample<T> where T : class 
{ 
    // stored in the stack as well. 
    public int Age; 

    // memory address pointing to the heap stored in the stack, 
    // but the actual object is stored in the heap. 
    public string Name; 
    // same as string above if T was reference type; 
    // otherwise, if value type, same as Age above. 
    public T SomeThing; 
} 
+0

Une valeur de type valeur est uniquement stockée dans la pile lorsqu'elle fait (directement ou indirectement) partie d'une variable locale. Voir http://pobox.com/~skeet/csharp/memory.html –

2

System.String est un type de référence, bien qu'il présente certaines caractéristiques d'un type de valeur.

1

cordes est vraiment un type de référence qui agit comme un type de valeur. C'est pourquoi vous pouvez tester contre null pour une chaîne et vous ne pouvez pas pour int, bool, etc Eh bien, vous pouvez, mais vous obtiendrez simplement la valeur par défaut 0, false, etc

1

System.String est un le type de référence n'est pas un type de valeur.

Questions connexes