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
Gültigkeit von array
kstanger
myCSharp.de - Member



Dabei seit:
Beiträge: 38

Themenstarter:

Gültigkeit von array

beantworten | zitieren | melden

Hallo allerseits,
ich glaube, ich verstehe die Basics nicht.


            if (File.Exists(Globals.DateiPfad + "Ledsteuerung_Settings.txt"))
            {
                string jsonString = File.ReadAllText(Globals.DateiPfad + "Ledsteuerung_Settings.txt");
                Presetting[] Presettings = JsonSerializer.Deserialize<Presetting[]>(jsonString);
                ListBoxProfil.Items.Clear();
                for (int loop = 0; loop < Presettings.Length; loop++)
                {
                    ListBoxProfil.Items.Add(Presettings[loop].ProfilName);
                    if (Presettings[loop].LastOne == 1)
                    {
                        TextBoxPath.Text = Presettings[loop].Pfad;
                        TextBoxRGB.Text = Presettings[loop].RGBDatei;
                        TextBoxEvent.Text = Presettings[loop].EventDatei;
                        TextBoxTiming.Text = Presettings[loop].TimingDatei;
                        UpDownMaxRGB.Value = Presettings[loop].RGBMaxHell;
                        UpDownAnzLed.Value = Presettings[loop].AnzLed;
                        UpDownAnzRelais.Value = Presettings[loop].AnzRelais;
                        UpDownTimeLapse.Value = Presettings[loop].Zeitraffer;
                        ListBoxProfil.SelectedIndex = loop;
                    }
                }
                MessageBox.Show("in if: " + Presettings[0].RGBDatei);

            }
            MessageBox.Show(Presettings[0].RGBDatei);

(um Globals und Pfadkombination kümmere ich mich später)
Presettings[0] wird duch den Deserialisierer gefüllt. In der if-Anweisung funktioniert die MessageBox. Sobald ich aus dem if raus bin, ist Presetting = null.
Das ist sicherlich richtig, aber ich verstehe das nicht.
Hilfe!
Halt, stop - ich hab's: wenn die if-Bedingung nicht erfüllt ist, muss Presettings = null sein, da ja nix gefüllt wird.

Jetzt habe ich einen else-Zweig erstellt, aber trotzdem ist Presettings = null:


            else
            {
                Presettings = new Presetting[]
                 {
                    new Presetting(@"C:\users\kstan\source\LED\", "rgbDummy.txt", "eventDummy.txt", "timingDummy.txt", 255, 40, 8, 60, "DummyProfil", 1)
                 };
            }
            MessageBox.Show(Presettings[0].RGBDatei);

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von kstanger am .
Karl Stanger
private Nachricht | Beiträge des Benutzers
Alf Ator
myCSharp.de - Member



Dabei seit:
Beiträge: 671

beantworten | zitieren | melden

Hallo kstanger

Das liegt daran, dass du Presettings im Scope der if-Abfrage definierst.

Der Scope geht von der { bis zur } der if-Abfrage. Alles was innerhalb definiert wird, ist ausserhalb nicht verfügbar.

Mach das mal so:


Presetting[] presettings;
if (..)
{
  ..
  presettings = JsonSerializer.Deserialize<Presetting[]>(jsonString);
  ..

Gruß Alf

PS: Les mal das: C# Coding Conventions
private Nachricht | Beiträge des Benutzers
kstanger
myCSharp.de - Member



Dabei seit:
Beiträge: 38

Themenstarter:

beantworten | zitieren | melden

Danke, das war's schon. Hätte ich eigentlich selbst drauf kommen müssen...
Karl Stanger
private Nachricht | Beiträge des Benutzers
chilic
myCSharp.de - Experte



Dabei seit:
Beiträge: 2.111

beantworten | zitieren | melden

Das darf dann aber nicht null sein, sondern ist überhaupt nicht definiert.
private Nachricht | Beiträge des Benutzers