Ich steige von VB auf C# um. Was bedeuten die Typen ref und out für Paramater bei Prozeduren? Handelt es sich bei den ref-Parametern um einfache Verweis- sprich Referenzdatentypen und bei out-Parametern um Parameter, die Ergebniswerte zurückliefern? Und warum ist ref überhaupt anzugeben, wenn Referenzvariablen doch über die Verweisvariable ohnehin so änderbar sind?
Ganz rechts oben hat ck eine Suchfunktion, über die Du z.B. diese sehr ähnliche Frage samt Antwort finden könntest.
Warum ist ref überhaupt anzugeben, wenn Referenzvariablen doch über die Verweisvariable ohnehin so änderbar sind?
Wenn eine Methode eine Referenz auf ein Objekt als "normalen" Parameter (ohne out und ref) übergeben bekommt, kann sie das Objekt ändern. Mit ref hingegen kann sie die Referenz ändern, d.h. nach dem Rückkehr der Methode hält der Aufrufer ggf. eine völlig neue Referenz auf ein anderes Objekt, statt die alte Referenz auf ein, möglicherweise geändertes, Objekt.
Out-Parameter verhalten sich genau wie ref-Parameter, nur dass diesen nicht initialisierte Variablen übergeben werden können und der Aufruf nicht mit ref, sondern mit out erfolgt.
BTW: In c# gibt es keine Prozeduren, nur mehr Methoden.