Le tableau code> La classe code> ne peut contenir que des références aux objets, mais que se passe-t-il lorsque vous stockez un type de valeur telle que des entiers?
string str = "Hello"; int i = 50; ArrayList arraylist = new ArrayList(); arraylist.Add(str); // Makes perfectly sense: // Reference to string-object (instance) "Hello" is added to // index number 0 arraylist.Add(i); // What happens here? How can a reference point to a value // type? Is the value type automatically converted to an // object and thereafter added to the ArrayList?
4 Réponses :
Ça s'appelle "Boxe": automatiquement, l'INT est converti en un type de référence. Cela coûte certaines performances. P>
Voir aussi boxe et nonboxing . p>
Le arraylist.add () ajoutera à prendre n'importe quelle valeur et ajoute en tant qu'objet, la valeur entière sera donc automatiquement convertie (boxe) et est ajoutée à ArrayList. P>
Si vous tirez la classe Code> ArrayList Code> dans ILSPY, vous verrez que le magasin de support est le suivant: et que le donc lorsque vous appelez Incidemment, si vous avez besoin d'une arrayliste ajoutez code> méthode accepte une instance de type
objet code>: p>
Ajouter code> avec un entier, .NET cases L'entier et ensuite, il est ajouté au
_Items < / code> tableau dans la liste code> comme un objet
code>. p>
code> de Just entiers et Vous utilisez le cadre .NET 2.0 ou ultérieurement, vous devez utiliser le liste
int code> lors de la conservation ou de la récupérer de la liste (voir le Section des considérations de performance dans ce dernier lien). P> p>
sa boxe appelée. Une "boîte" contient une copie de la structure avec des détails sur le type c'est. P>
msdn: http: // msdn. microsoft.com/en-us/library/yz2be5wk%28v=vs.80%29.aspx P>
dans le cadre 2.0 + Microsoft nous a donné des génériques qui sont plus rapides et plus efficaces: P>
MSDN: http://msdn.microsoft.com/en-us/ Bibliothèque / MS172192.aspx P>
Dupliqué possible de Comment "boxe" fonctionne-t-il dans .NET?
Pas vraiment - vous saviez seulement que les deux sont liés si vous connaissiez déjà la réponse à cette question.
@Binary inquiétant - c'est le même sujet, mais vous devez alors savoir comment cela s'appelle ..
@mavnn qui ne signifie pas qu'ils ne sont pas la même chose, cependant; P Un peu de duplication (surtout avec différents titres, etc.) est en bonne santé, cependant.