Na ja, es hat noch zusätzliche Auswirkungen:
Ein out-Parameter muss nicht initialisiert sein, da er eigentlich ja nur ein "rückgabewert" ist. In der Prozedur, in der ein out-Parameter verwendet wird, wird deshalb auch nicht vorausgesetzt, dass dieser Bereits initialisiert ist - im Gegensatz zu einem ref-Parameter.
Ein ref-Parameter muss initialisiert sein, bevor er übergeben wird.
bsp:
Code:
public void a(out int h)
{
if (h != 1) //Klappt nicht, da h noch nicht zwingend initialisiert ist
return;
h = 0;
}
public void b(ref int h)
{
if (h != 1) //Klappt, da h aufgrund des ref initialisiert sein muss
return;
h = 0;
}
public void call()
{
int h;
a(out h);
b(ref h); //klappt nicht, da h nicht initialisiert ist
h = 1;
b(ref h); //jetzt klappt auch das
}
ich hoff, es wird damit etwas verständlicher.
greetz
Mike