04. januar 2005 - 15:15Der er
10 kommentarer og 1 løsning
Min collection laver referencer
Jeg er ved at lave et program der bruger en masse collections som den looper, jeg er dog stødt på et rigtig irriterende problem med dette. Jeg har et object som jeg ska sætte ned i 2 forskellige collections, først sætter jeg den ind i den ene, ingen problemer... derefter ændrer jeg objektet, og indsætter det nu i den anden, men de ændringer jeg lavede er gået ud over objektet i begge collections... det er som om den laver en reference til objektet, jeg ved ikke om det er en bug eller om det er meningen, men jeg vil gerne undgå denne opførsel.
Jeg har lavet et test project for at vise hvad jeg mener:
namespace ConsoleApplication1 { public class test { public test() { testobj test1 = new testobj(); testobj test2 = new testobj();
testobj2 t = new testobj2(); t.ABC = "hej";
test1.Add(t);
t.ABC = "dav";
test2.Add(t);
foreach (testobj2 ss in test1) { Console.WriteLine(ss.ABC); }
foreach (testobj2 ss in test2) { Console.WriteLine(ss.ABC); }
Console.ReadLine(); } }
public class testobj : ICollection { private testobj2[] items = new testobj2[0];
public testobj2 this[int i] { get { return items[i]; } set { items[i] = value; } }
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Hmm, nu har jeg lavet mit object cloneable og implementeret Memberwiseclone tingen.
// Her er værdien jeg bruger i seg = "" checksegments.Add((Segment)seg.Clone());
foreach (QueryAction qa in qacs[key]) { if(qa.InsertValue != null) seg = SetComponent(seg, qa.EDI_ComponentID, FormatString(qa.InsertValue.ToString().Trim())); } // Her er værdien i både checksegment og seg = "20041210"
Jeg har på fornemmeren at det er pga den værdi jeg henter i Segment objektet egentlig ligger i et andet objekt under Segment, som ikke er clonet... Hvis jeg også gør dette objekt cloneable, burde det så virke ?
Lad alle klasserne have en Clone som kalder Clone på alle members.
Mere kode en serialize + deserialize men pænere.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.