[C#] Un point flou a éclaircir

Pseudo exemple concret:

[code]class MonObjet
{
public MonObject(MonObjet parent, MonObjet child)
{

}

}

class Container
{
public Container()
{
MonObjet[] liste = new MonObjet[10];

for(int i = 0; i < liste.Length; i++)
{
   liste[i] = new MonObjet( liste[i - 1], liste[i + 1] );
}

}
}[/code]

Sachant que liste[i + 1] vaut null dans la boucle (oui l’objet n’est pas encore initialisé a i + 1) que va t’il se passer lors de l’initialisation de i + 1? Est ce que le tableau contient des références vers des null ou c’est l’élément du tableau qui est null? Bref si j’initialise i + 1, est ce que les précédent auront la référence, ou ca vaudra toujours null?

Ca marchera pas, liste[i + 1] est égal à null, donc ton paramètre vaudra null.

Donc quand tu feras ensuite un new de ton i + 1, son parent ne sera pas au courant : il aura stocké un pointeur qui ne pointe vers rien.

Une solution pourrait être qu’un enfant modifie tout seul son parent dans son constructeur :

class MonObjet { public MonObject(MonObjet parent) { _parent = parent; _parent.Children = this; } }

for(int i = 0; i < liste.Length; i++) { liste[i] = new MonObjet( liste[i - 1], liste[i + 1] ); }

Sans parler du fait que lors de la première itération, liste[0 - 1] te lancera un IndexOutOfRangeException (ou un truc du genre, me rapelle plus le nom exact).

[quote="[PERE]Cil, post:1, topic: 46533"]

Sachant que liste[i + 1] vaut null dans la boucle (oui l’objet n’est pas encore initialisé a i + 1) que va t’il se passer lors de l’initialisation de i + 1? Est ce que le tableau contient des références vers des null ou c’est l’élément du tableau qui est null? Bref si j’initialise i + 1, est ce que les précédent auront la référence, ou ca vaudra toujours null?[/quote]

Ca vaudra toujours null.