Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Property mit ref-Parameter an Methode übergeben
Runshak
myCSharp.de - Member



Dabei seit:
Beiträge: 71

Themenstarter:

Property mit ref-Parameter an Methode übergeben

beantworten | zitieren | melden

hallo

ich bin über die Suche auf ein Thema gestoßen, welches mir eine Antwort gibt, zu dem Problem das ich habe...
Fehler
error CS0206: Eine Eigenschaft, ein Indexer oder ein dynamischer Memberzugriff kann nicht als out- oder ref-Parameter übergeben werden.

und herbivore hat dazu folgendes geschrieben...
Zitat
Wenn man eine Property an eine Methode übergeben will, die einen ref-Parameter erwartet, müsste man also den Wert der Property in einer Variablen speichern, diese per ref übergeben und den geänderten Wert anschließend in die Property zurückschreiben.

Meine Frage...wie setze ich das denn um?
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.510

beantworten | zitieren | melden

MSDN: Compilerfehler CS0206 beantwortet die Frage nicht?
private Nachricht | Beiträge des Benutzers
Palladin007
myCSharp.de - Member

Avatar #avatar-4140.png


Dabei seit:
Beiträge: 1.583
Herkunft: Düsseldorf

beantworten | zitieren | melden

var propertyCache = Property;
MyMethod(ref propertyCache);
Property = propertyCache;

Anders geht's nicht und das meinte vermutlich auch herbivore.


In den meisten Fällen braucht man ref aber gar nicht, oder die Methode tut mehr als eine Aufgabe.
Bisher habe ich glaube ich wirklich nur einen Anwendungsfall gesehen, wo es tatsächlich nötig ist und das sind die verschiedenen TryParse-Methoden bei den primitivaten Datentypen, bzw. wenn man das in einem eigenen Kontext machen will.
Ich würde mir daher überlegen, ob Du das wirklich brauchst. Wenn ja, dann kommst Du nicht um den oben gezeigten Umweg herum.
private Nachricht | Beiträge des Benutzers
Runshak
myCSharp.de - Member



Dabei seit:
Beiträge: 71

Themenstarter:

beantworten | zitieren | melden

Ich hab ne C++ Dll eingebunden...und eine der Methoden besitzt 7 Parameter vom Typ String und Long...umgewandelt in String und Int32...aber sie besitzt halt auch noch einen Long* parameter...und das muss ich mit ref machen damit es funktioniert...jedenfalls meinte das der Kollege, der die DLL zusammengebastelt hat...


werde das von @palladin007 mal versuchen...danke :)
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.510

beantworten | zitieren | melden

Naja, dass Du hier mit C++ arbeitest hättest ruhig auch im Eingangsthread erwähnen können (Stichwort PInvoke).
Da kommt es halt drauf an, wie das genau deklariert ist.
Das kann jetzt nen Char-Pointer sein, nen StringBuilder oder direkt ein String.

Dazu sollte man den Header kennen...
private Nachricht | Beiträge des Benutzers
Runshak
myCSharp.de - Member



Dabei seit:
Beiträge: 71

Themenstarter:

beantworten | zitieren | melden

wusste nicht dass das ne rolle spielt...aber das was Palladin007 vorgeschlagen hat funktioniert
private Nachricht | Beiträge des Benutzers