Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1550 | Anzahl registrierter User: 1840 | Besucher online: 177
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Call by Reference - OUT


Autor: Jan Welker
Sprache: C#
Bewertung: 5
(1 Bewertung)
Anzahl der Aufrufe: 6794
  
Kick it on dotnet-kicks.de  

Beschreibung:

Funktioniert genau wie Call by Reference, mit dem Unterschied das die Adressen der Übergabeparameter vor der Übergabe nicht initialisiert werden brauchen.

Abgelegt unter: reference, out, pointer, Parameterübergabe.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/* 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;
}
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

nqfe schrieb am:  26.02.2009 09:37:35

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
}
}


Diese Snippets könnten für Sie interessant sein:

schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.