C# kann Variable in der selben Klasse nicht benutzen?

3 Antworten

Du hast den String innerhalb der Methode button8_Click deklariert, somit ist die Variable auch nur innerhalb dieser Methode sichtbar.

Deklariere sie außerhalb der Methode, also als Variable der Klasse. Dann ist sie auch in allen Methoden sichtbar.

________________________________

Wichtig für das Verständnis:

Deklarieren ≠ Initialisieren.

Deklarieren heißt die Variable "anlegen".

Initialisieren heißt, ihr einen Wert zuzuweisen. Dies kannst du nach wie vor in der Methode button8_Click tun. Aber sie muss eben vorher "angelegt" (deklariert) werden.

Woher ich das weiß:Berufserfahrung – Softwareentwickler für Warehouse Logistics

Zuran57 
Fragesteller
 11.09.2021, 13:22

Funktioniert jetzt, Danke!

1

Wo wird die varibale fielPath den deklariert?

Woher ich das weiß:Studium / Ausbildung – Informatikstudent

Zuran57 
Fragesteller
 11.09.2021, 13:17

Bei dem If bei Button8:              

if (openFileDialog.ShowDialog() == DialogResult.OK)

                {

                    String filePath = openFileDialog.FileName;

                    textBox1.Text = filePath;

0
whgoffline  11.09.2021, 13:18
@Zuran57

Da versuchst du ja eber den Text der textBox1 auf den Wert von filepath zu setzen. Aber woher kommt filePath?

0
whgoffline  11.09.2021, 13:23
@Zuran57

Oh man, habe ich wohl übersehen. Aber liegt der Fehler dann in dieser Zeile?

System.Diagnostics.Process.Start($"{filePath}");
0
Zuran57 
Fragesteller
 11.09.2021, 13:27
@whgoffline

Habs schon hingekommen, das Problem war das die Variable bei Button8 deklariert war und somit nur bei Button8 sichtbar war, ich hab sie jetzt direkt am Klassenanfang unter public partial class Launcher : Form gesetzt und jetzt funktioniert es.

1
whgoffline  11.09.2021, 13:28
@Zuran57

Das wäre auch meine Vermutung gewesen, dass die Variable nur Funktionslokal war ;)

0

Deine Variable "filePath" existiert momentan nur innerhalb der if-Abfrage, in der du sie auch deklariert hast.

Es gibt einen Unterschied zwischen lokalen und globalen Variablen.

Lokale Variablen existieren nur innerhalb des Paares an geschweiften Klammern, in denen sie deklariert/initialisiert werden. Also in deinem Fall "stirbt" die Variable nach der if-Abfrage.

Globale Variablen existieren in der kompletten Klasse und können auch von allen Methoden genutzt (lesend und schreibend, wenn nicht anderweitig abgesichert) werden.

Aber wie löst du jetzt dein Problem?

Naja, du musst dir überlegen wie du diese Variable am sinnvollsten sicherst. Du könntest die Variable global machen, sie in einer Textdatei zwischenspeichern, usw.
Da musst du dir einfach ein paar Gedanken machen wie du die Variable am besten sicherst und sie dabei auch noch vor unerwünschten Zugriffen schützt (Stichwort: Geheimnisprinzip).

Viel Erfolg!

Woher ich das weiß:Studium / Ausbildung