public class MyClass
{
int i = 0;
string str = "here";
MyStruct mystruct;
B b;
ArrayList myList = new ArrayList(10);
public MyClass()
{
}
....
}
public struct MyStruct
{
public int i;
public float f;
}
public class B
{
...
}
Vous voulez apprendre comment une instance d'une classe est créée en arrière-plan. Lorsque cette déclarationComment C# crée-t-il une instance d'une classe?
MyClass myClass = new MyClass();
est évaluée. Qu'est-ce qui va se passer dans le backgroud? Mes instructions suivantes sont correctes ou non (pour un système d'exploitation 32 bits)?
- Un espace mémoire sera créé et référencé
myClass
; Dans l'espace mémoire ci-dessus, 4 octets sont utilisés pour la valeurint i
; - dans l'espace mémoire ci-dessus, 4 octets est utilisé pour la référence de
string str
; la valeur réelle dustr
est stockée dans un autre emplacement (où?) - dans l'espace mémoire ci-dessus, 8 octets est utilisé pour la valeur de
MyStruct mystruct
(parce que MyStruct est 8 octets); - dans l'espace mémoire ci-dessus, 4 octets est utilisé pour la référence de l'objet
B b
; la mémoire pour l'objet b sera allouée ailleurs quand elle est instanciée; Dans l'espace mémoire ci-dessus, 4 octets sont utilisés pour la référence duArrayList myList
; l'espace mémoire réel pourArrayList myList
est alloué dans un autre endroit et référencé ici commemyList
; - un autre 4 ou 8 octets de l'espace mémoire ci-dessus est utilisé pour les métadonnées d'objet;
- ...;