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]

Visual Studio Team Foundation Server 2017/2015 (TFS) für Projektmitglieder - Kompakt

Nach Teilnahme an dieser Schulung sind Ihnen die Grundlagen von ALM geläufig. Sie planen und steuern Projekte effizient mit dem Visual Studio Team Foundation Server.

VB.NET 2017/2015/2013 Aufbau

Nach dieser Schulung können Sie mittels objektorientierter Modelle in VB.NET 2017/2015/2013 wiederverwendbare Elemente eigenständig erstellen.

/* 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!