2010-11-20 3 views
0

Possible en double:
In C#, why is String a reference type that behaves like a value type?chaîne est une classe pourquoi

Pourquoi dans la chaîne C# est un type de classe/ref, où int/doubles sont la valeur/struct- tout spécifique raison ou c'est par conception

+3

C'est un doublon de [En C#, pourquoi String est un type de référence qui se comporte comme un type de valeur?] (Http://stackoverflow.com/questions/636932/in-c-why-is-string-a- type-référence-qui-se comporte comme-un-type-valeur). Réponse courte: nous aimerions que ce soit un type de valeur, mais il doit être alloué sur le tas car sa taille peut être énorme. –

Répondre

0

Les types intégraux ont la propriété importante d'être accessibles dans leur ensemble par le processeur en une fois. Ce n'est pas le cas pour une chaîne qui peut être composée de milliers d'octets, donc dans toutes les langues, les chaînes ont toujours été pointées, parce que l'ordinateur ne peut pas vraiment le faire autrement.
Dans un langage objet comme C#, il est canonique de créer une classe pour pointer vers un emplacement de mémoire: c'est en fait ce qu'est un objet. Donc oui, les chaînes sont des classes, car elles ne peuvent pas être des types entiers.

Questions connexes