Forums Neueste Beiträge
 

Objekt Member Variable per ref übergeben

04/09/2009 - 14:33 von Pascal Vizeli | Report spam
Guten Tag

Ich habe ein Problem. Eigentlich sollte das nach
meiner Auffassung ja funktioneren. Typen-Sicher ist es auch.
Bis jetzt hatte ich in keiner Programm Sprache dieses Problem
Je gesehen.

Ausgangslage:

[csharp]
public class Test {
public Test1 m_testObj;
}

public class Test1 {
public string m_name;
}
[/csharp]

Nun hab eich eine Funktion welche wie folgt Deklariert ist:

[csharp]
public void setName(ref Test1 testObj);
[/csharp]

Wenn ich die Funktion wie folgt Aufrufen will:

[csharp]
Test meinTestObj = new Test();
setName(ref meinTestObj.m_testObj);
[/csharp]

Gibt es ein Fehler. Er bezieht das Ref auf Test und nicht auf Test1!
Wie kann man ihm klar machen, dass m_testObj die referenz sein soll...
er würde ja sowieso nur dieses Objekt übergeben.

Freundliche Grüsse
Pascal
 

Lesen sie die antworten

#1 Lars Steinmetz
04/09/2009 - 19:14 | Warnen spam
Pascal Vizeli schrieb:
[...]

[csharp]
Test meinTestObj = new Test();
setName(ref meinTestObj.m_testObj);
[/csharp]



Hier muss es einen Fehler geben (hoffentlich auch in andeeren Sprachen!)
Denn meinTestObj.m_testObj ist null! Und null per Referenz zu
übergeben... Na ich weis nicht.

Versuch mal so:
Test meinTestObj = new Test();
meinTestObj.m_testObj = new Test1();
setName(ref meinTestObj.m_testObj);

Oder aber per out:

Test meinTestObj2 = new Test();
setName2(out meinTestObj2.m_testObj);

private void setName2(out Test1 testObj)
{
Test1 obj = new Test1();
obj.m_name = "Foo";
testObj = obj;
}

Gruß Lars

Ähnliche fragen