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

Der Rückgabewert kann nicht geändert werden, da er keine Variable ist.
aime2code
myCSharp.de - Member



Dabei seit:
Beiträge: 50

Themenstarter:

Der Rückgabewert kann nicht geändert werden, da er keine Variable ist.

beantworten | zitieren | melden

Hallo Leute,

habe vor kurzem erst erfahren, dass man ab C# 3 die Felder noch viel kürzer und einfacher kapseln kann, nämlich:

public String MeinText { get; set; }
Ich denke das brauche ich hier keinem erklären ...


Mein Problem ist jetzt nun, dass ich auf eine so gekapselte Struktur nicht mehr vernünftig zugreifen kann.

public class Class1
    {
        public MyStruct Props { get; set; }
        private MyStruct props;

        public Class1()
        {
            Props.MyProp = 7;
            props.MyProp = 5;
        }
    }

Die erste Zeile im Konstruktor macht Probleme:

Props.MyProp = 7;
Fehler
Der Rückgabewert "ClassLibrary1.Class1.Props" kann nicht geändert werden, da er keine Variable ist.


namespace ClassLibrary1
{
  public struct MyStruct
    {
        public int MyProp { get; set; }
    }


    public class Class1
    {
        public MyStruct Props { get; set; }
        private MyStruct props;

        public Class1()
        {
            Props.MyProp = 7;
            props.MyProp = 5;
        }
    }
}

Klärt mich bitte auf

Im Anhang ist das ganze klitzekleine Projekt.
Attachments
private Nachricht | Beiträge des Benutzers

Moderationshinweis von Abt (26.11.2011 - 17:38:28):

Bitte keine ganzen Projekte anhängen. Ich hab die relevanten Code-Stellen in den Beitrag eingefügt.

FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 10083

beantworten | zitieren | melden

Es ist immer noch so, das du ein Objekt erst erzeugen musst, bevor du drauf zugreifen kannst.


public class Class1
    {
        public MyStruct Props { get; set; }

        public Class1()
        {
            Props = new MyStruct();
            Props.MyProp = 7;
            props.MyProp = 5;
        }
    }
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo aime2code,

siehe [Hinweis] Syntaxfehler selbst lösen (Compilerfehlermeldungen)

Es wurde im Forum schon 1000fach besprochen, warum das nicht geht und wie man Felder einer Struktur ändern kann, wenn man auf die Struktur nur Zugriff über eine Property hat. Kurz gesagt: die Struktur komplett abrufen, ändern und komplett zurückschreiben.

Das ist übrigens nicht erst seit C# 3 so und hat auch nichts damit zu tun, dass die Properties automatisch sind, sondern es ist seit Anfang an so.

Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1.1 und 1.1.

herbivore
private Nachricht | Beiträge des Benutzers