Gepostet: |
ref und non value types | ||||||||||
moin! Non value types werden in C# doch immer by reference an Methoden übergeben, richtig? Macht es dann überhaupt Sinn <code>ref für non value types zu benutzen? Hat man in der Methode dann einen Verweis auf den Verweis auf den Speicher. Die Frage ist, ob ich method(ref Klasse identifier) oder method(Klasse identifier) benutzen soll? Help appreciated. |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Das Schlüsselwort ref bei Referenztypen anzugeben, macht nur in einigen Sonderfällen Sinn. Zum Beispiel, wenn es ums Marshallen von Objekten geht. Wenn man mittels Remoting eine entfernte Methode aufruft, werden im Normalfall die Methodenparameter als In-Parameter behandelt. Das heisst, wenn die aufgerufene Methode Änderungen an einem übergebenen Parameter vornimmt, kommen diese nicht beim Aufrufer an, egal ob es sich um einen Referenztyp handelt oder nicht. Wenn der Programmierer aber ref-Parameter benutzt, erkennt das Marshalling-System, dass die Änderungen auch zurückgeben werden sollen. Ähnlich sieht es mit beim Zugreifen auf COM oder allgemein ungemanagten Code aus. Nur mit dem Unterschied, dass man hier statt ref-Parametern die Parameter-Attribute [In, Out] angeben muss/kann. Gruß Pulpapex |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Danke für die ausführliche Antwort. Ich benutze den ref Parameter auch für Referenztypen, um zu verdeutlichen, dass die Methode den Parameter verändert. Mittlerweile habe ich nun auch mein erstes C# Projekt fertiggestellt: http://www.thomas-alfeld.de/frank/index.php?file=MyOpenSource%2FDrohne Viele Grüße, Frank |
|||||||||||
Zum Seitenanfang | |||||||||||