Feedback

C# - Call by Reference - OUT

Veröffentlicht von am 27.04.2006
(1 Bewertungen)
Funktioniert genau wie Call by Reference, mit dem Unterschied das die Adressen der Übergabeparameter vor der Übergabe nicht initialisiert werden brauchen.
GFU-Schulungen  [Anzeige]

VB.NET 2017/2015/2013 Einführung

Das Seminar befähigt Sie zur eigenständigen Entwicklung von anwenderorientierten Programmen in VB.NET, worin auch der Einsatz von Datenbanken enthalten ist.

VB.NET Aufbau

Sie verfügen nach der Schulung über fundierte Kenntnisse in der Arbeit mit objektorientierten Modellen in VB.NET und können wiederverwendbare Komponenten eigenständig erzeugen.

/* Beide Zahlen werden angelegt, dann werden beide Zahlen als Adresse an die Funktion CallByReferenceOUT übergeben,
 * dort werden diese Wertte bearbeitet, sie brauchen nicht zurückgegeben werden weil sie dort bearbeitet werden wo sie gerade
 * sind, im Speicher 
 * Besonderheit: die Adressen können übergeben werden ohne das die vorher initialisiert werden müssen
 */

private void button3_Click(object sender, System.EventArgs e)
{
	int Zahl1;
	int Zahl2;

        CallByReferenceOUT(out Zahl1, out Zahl2);

	textBox11.Text = Zahl1.ToString();
	textBox8.Text = Zahl2.ToString();
}

private void CallByReferenceOUT (out int Zahl1, out int Zahl2)
{
	Zahl1 = 1;
	Zahl2 = 2;
}
Abgelegt unter reference, out, pointer, Parameterübergabe.

1 Kommentare zum Snippet

nqfe schrieb am 26.02.2009:
Ganz so wie bei der Übergabe von ref Parametern ist es nun doch nicht.
Out Parameter müssen wie im obigen Beispiel beschrieben zwar nicht initialisiert werden. Bei einer Initialisierung kann aber im Gegensatz zu ref Parametern nicht auf den Wert zugegriffen werden.
Folgendes geht nicht.

static void Main(string[] args)
{
Int32 intZahl=123;
foo(out intZahl);
Console.Write(intZahl);
}

static void foo(out Int32 bar)
{
Console.Write(bar); //lesend zugreifen nicht möglich
}
}


Ebenso müssen bei Einsatz von out Parametern diese innerhalb der Methode initialisiert (zugewiesen) werden.

static void Main(string[] args)
{
Int32 intZahl;
foo(out intZahl);
Console.Write(intZahl);
}

static void foo(out Int32 bar)
{
Console.Write("Hallo");
//Fehler: fehlende Zuweisung von bar
}
}
 

Logge dich ein, um hier zu kommentieren!