also entweder habe ich da irgend was noch nciht vertanden oder ich habe jetzt die seltsamste aller seltsamheiten dieser sprache entdekt.
als ich das gesehen habe dachte ich mir erst mal "das meinen die jetzt nicht im ernst"
also ich mache in meinem code folgendes:
so nun wird der wert zwar übergeben aber in Methode1 nicht gesetzt.
ich habe das ganze mal versucht mit "ref" zu machen aber der mag da anscheinend keine objects. also habe ich das ganze mal mit "params" ausprobiert.
So konnte ich im debugger sehen das der wert in Methode2 gesetzt wurde von der methode SetzeWert. Nur die Methode1 hat davon nichts mitbekommen.
gehe ich nun hin und mache folgendes
jetzt steht der korrekte wert in Params aber ItemList selber wurde trozdem nicht gesetzt also mußte ich noch die zuweisung hinzufügen was ich nun total überflüssig finde.
das kranke finde ich ja auch noch, wenn ich das als einzelne parameter übergebe es auch nicht funktioniert.
also irgend wie finde ich das konstrukt extremst seltsam
mfg
Zebes
als ich das gesehen habe dachte ich mir erst mal "das meinen die jetzt nicht im ernst"
also ich mache in meinem code folgendes:
Code:
void Methode1() { List<Item> ItemList = null; Methode2(new object[]{MsgType.Typex, ItemList}); } void Methode2(object[] obj) { switch((MsgType)obj[0] { case Typex: SetzeWert(obj); break; case Typey: SetzeAnderenWert(obj); break; } }
ich habe das ganze mal versucht mit "ref" zu machen aber der mag da anscheinend keine objects. also habe ich das ganze mal mit "params" ausprobiert.
Code:
void Methode1() { List<Item> ItemList = null; Methode2(new object[]{MsgType.Typex, ItemList}); } void Methode2(params object[] obj) { switch((MsgType)obj[0] { case Typex: SetzeWert(obj); break; case Typey: SetzeAnderenWert(obj); break; } }
gehe ich nun hin und mache folgendes
Code:
void Methode1() { List<Item> ItemList = null; object[] Params = new object[]{MsgType.Typex, ItemList}; Methode2(Params); } void Methode2(params object[] obj) { switch((MsgType)obj[0] { case Typex: SetzeWert(obj); break; case Typey: SetzeAnderenWert(obj); break; } }
Code:
void Methode1() { List<Item> ItemList = null; object[] Params = new object[]{MsgType.Typex, ItemList}; Methode2(Params); ItemList = (List<Item>)Params[1]; }
Code:
void Methode1() { List<Item> ItemList = null; Methode2(MsgType.Typex, ItemList); }
mfg
Zebes
Comment