Laden...

zwei Variablen der Structure hinzufügen

Erstellt von Apollo56 vor einem Jahr Letzter Beitrag vor einem Jahr 674 Views
A
Apollo56 Themenstarter:in
13 Beiträge seit 2022
vor einem Jahr
zwei Variablen der Structure hinzufügen

Hallo,
Ich würde gerne zwei Variablen der Structure hinzufügen und die nicht verwendete Variable auf 0 setzen lassen.
die zwei Variablen sollen bestimmen ob der Betrag eine Ausgabe oder Einnahme ist. Wie gehe ich da genau vor?
Bisher habe ich das hier


 public struct Eintrag
        {
            public string Betreff;
            public decimal Betrag;

            public Eintrag(string betreff, decimal betrag)
            {
                Betreff = betreff;
                Betrag = betrag;
            }
         
        }

L
11 Beiträge seit 2019
vor einem Jahr

Hi Apollo56,

ich weiß leider nicht genau, welche zwei Variablen Du meinst, die Du hinzufügen möchtest. Dein struct hat ja aktuell schon zwei Variablen. Daher versuche ich mal, wie Frage ein wenig umzuformulieren:

Du hast das struct "Eintrag" mit den Variablen string Betreff und decimal Betrag. Nun möchtest Du über irgendeinen Weg festlegen können, ob der Betrag eine Einnahme oder eine Ausgabe ist.

Trifft das den Kern Deiner Frage? Falls ja, dann habe ich hier ein paar Denkanstöße für Dich:

  • Du kannst komplett auf eine weitere Variable verzichten, indem Du Einnahmen immer als positive und Ausgaben immer als negative Zahlen speicherst. Damit kannst Du auch den aktuellen Kontostand (ich nehme mal an, etwa das soll das Programm verwalten) ganz einfach ermitteln, indem Du den Betrag alle "Einträge" zusammenaddierst, ohne, dass Du jedes Mal schauen musst, ob der Eintrag eine Einnahme oder Ausgabe ist.
  • Du könntest eine bool'sche Variable (Wahrheitswert) einführen, etwa bool istEinnahme. Wenn es eine Einnahme ist, setzt du istEInnahme auf true, ansonsten auf false. Das ist eine recht einfache Lösung, aber kann nicht gut erweitert werden. Wenn Du zum Beispiel später noch zwischen erhaltenen Überweisungen und erhaltenen Zinsen unterscheiden willst, geht das nicht mehr mit einer einzigen bool-Variable.
  • Du kannst über Enumerationen (enum) arbeiten, ein Beispiel dazu ist unten

public enum EintragTyp
{
    Einnahme,
    Ausgabe
    // Hier könntest du noch weitere Typen definieren, etwa Zinsen, Überweisungen vs. Kartenzahlungen etc
}

public struct Eintrag
{
   public string Betreff;
   public decimal Betrag;
   public EintragTyp Typ;

   public Eintrag(string betreff, decimal betrag, EintragTyp typ)
   {
       Betreff = betreff;
       Betrag = betrag;
       Typ = typ;
   }
}

// Neue Einträge könnten dann wie folgt erstellt werden:
Eintrag eintrag1 = new("Demo-Einnahme", 25, EintragTyp.Einnahme);
Eintrag eintrag2 = new("Demo-Ausgabe", 13, EintragTyp.Ausgabe);

Viele Grüße
Lukas

16.842 Beiträge seit 2008
vor einem Jahr

Vorweg: ich versteh auch nicht was Du willst.
Les mal Deinen Beitrag durch und versetz Dich in die Lage eines potentiellen Helfers. Würdest Du es selbst verstehen, was Du schreibst?

Hinweis: Choosing Between Class and Struct - Framework Design Guidelines

In diesem Fall zusätzlich eher eingeschränkte Eigenschaften statt Felder. Felder haben einen anderen Anwendungszweck.


public struct Eintrag
{
   public string Betreff { get; }
   public decimal Betrag { get; }
   public EintragTyp Typ{ get; } 

   public Eintrag(string betreff, decimal betrag, EintragTyp typ)
   {
       Betreff = betreff;
       Betrag = betrag;
       Typ = typ;
   }
}

Properties - C# Programming Guide
Fields - C# Programming Guide