Thema: C# out vs. ref

Einzelnen Beitrag anzeigen

Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#3

Re: out vs. ref

  Alt 3. Mär 2006, 13:52
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
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat