Booleschen Wert in eine andere Klasse übergeben

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von MrLaTuNiX.

    Booleschen Wert in eine andere Klasse übergeben

    Hi Leute ich will ein Boolischen Wert in einer anderen Klasse übergeben warum klappt das nicht ...
    Mein Codde

    Im Main

    C#-Quellcode

    1. public bool test;


    in der Anderen Klasse

    C#-Quellcode

    1. if (a == true && b == true && c == true )
    2. {
    3. MainWindow MainWindowDaten = new MainWindow();
    4. MainWindowDaten.test= true;
    5. this.Close();
    6. }


    Aber kriege den Wert nicht true in Main warum ?
    @MrLaTuNiX Du musst

    C#-Quellcode

    1. public static bool Test;
    schreiben.

    C#-Quellcode

    1. using System;
    2. using System.Windows.Forms;
    3. namespace WindowsFormsApp2
    4. {
    5. public partial class Form1 : Form
    6. {
    7. public Form1()
    8. {
    9. InitializeComponent();
    10. }
    11. public static bool Test = false;
    12. private void button1_Click(object sender, EventArgs e)
    13. {
    14. var C1 = new Class1();
    15. C1.DoSomething();
    16. System.Diagnostics.Debug.WriteLine("");
    17. }
    18. }
    19. }


    C#-Quellcode

    1. namespace WindowsFormsApp2
    2. {
    3. class Class1
    4. {
    5. public void DoSomething()
    6. {
    7. Form1.Test = true;
    8. System.Diagnostics.Debug.WriteLine("");
    9. }
    10. }
    11. }

    Da eine MainWindow-Instanz sicherlich zu dem Zeitpunkt des Aufrufs schon exisiert (schwer zu sagen bei den paar Codefetzen), wirst Du wohl mit der falschen MainWindow-Instanz hantieren, da Du mit MainWindow MainWindowDaten = new MainWindow(); eine zusätzliche neue MainWindow-Instanz erstellst. Denn dann hättest Du 2 Instanzen.
    Falls MainWindow die andere Klasse instanziiert und aufruft, übergib der Klasse die test-Variable per Call-by-Reference und Du kannst in der anderen Klasse den Wert von test aus MainWindow ändern.

    btw: if (a == true && b == true && c == true ) -> Boolean-Vergleiche mit True sind überflüssig.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @VaporiZed Jou.
    @MrLaTuNiX Im Ernstfall so was:

    C#-Quellcode

    1. if (a && b && c)
    2. {
    3. MainWindowDaten.test= true;
    4. this.Close();
    5. }
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!