mardi 22 janvier 2013

Objet List (IList) et référence (pointeur)

Petit billet concernant les références des objets en C#.

Je viens de constater un principe auquel je n'avais pas fait attention, a savoir la modification (par référence) d'un objet présent dans une IList.


MyObj a = new MyObj();
MyObj b = a;
a.Name = "Test";
Console.WriteLine(b.Name); // Marquera "Test"
Maintenant passons en mode list
List< MyObj > listA = new List< MyObj >();

// ajout d'element
var item = new { id = 1, libelle = "Test1" };
listA.Add(item);
item = new { id = 2, libelle = "Test2" };
listA.Add(item);
item = new { id = 3, libelle = "Test3" };
listA.Add(item);
item = new { id = 4, libelle = "Test4" };
listA.Add(item);

foreach(var i in listA)
{
   if(i.id == 2)
   {
      i.libelle = "Test2Modifie";
   }
}

Console.WriteLine(listA[0].libelle); // Marquera "Test1"
Console.WriteLine(listA[1].libelle); // Marquera "Test2Modifie"
Console.WriteLine(listA[2].libelle); // Marquera "Test3"
Console.WriteLine(listA[3].libelle); // Marquera "Test4"

Voila.

Aucun commentaire:

Enregistrer un commentaire