Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Lokale & Globale Scopes | Methoden
C# Grundlagen
course content

Kursinhalt

C# Grundlagen

C# Grundlagen

1. Erste Schritte
2. Umgang mit Datentypen
3. Kontrollstrukturen
4. Schleifen
5. Arrays
6. Methoden

book
Lokale & Globale Scopes

Der Gültigkeitsbereich einer Variablen ist der Teil des Codes, in dem wir auf diese Variable zugreifen können. In C# gibt es einen globalen Gültigkeitsbereich und viele mögliche lokale Gültigkeitsbereiche.

Wenn wir eine Variable außerhalb einer Methode erstellen, kann sie von fast überall im Programm aus zugegriffen werden, daher wird gesagt, dass sie einen globalen Gültigkeitsbereich hat:

cs

main

copy
1234567891011121314151617181920
using System; namespace ConsoleApp { internal class Program { static int myVariable = 10; // Variable with a Global Scope static void testMethod() { // Accessing `myVariable` inside `testMethod` Console.WriteLine($"testMethod: {myVariable}"); } static void Main(string[] args) { // Accessing `myVariable` inside `Main` method Console.WriteLine($"Main Function: {myVariable}"); testMethod(); } } }

Hinweis

Wenn Sie eine Variable außerhalb einer Methode deklarieren, ist es wichtig, das Schlüsselwort static vor ihrer Deklaration einzufügen.

Im obigen Beispiel haben wir auf die Variable myVariable sowohl in der Main-Methode als auch in der testMethod zugegriffen. Dies ist jedoch nicht immer möglich.

Eine innerhalb eines Codeblocks deklarierte Variable ist nur innerhalb dieses Blocks und aller darin enthaltenen Unter-Codeblöcke zugänglich. Zum Beispiel ist eine innerhalb einer Methode deklarierte Variable nur direkt innerhalb dieser Methode zugänglich. Ebenso ist eine innerhalb eines if, else if oder else Blocks deklarierte Variable nur innerhalb dieses Blocks zugänglich. Eine solche Variable hat einen lokalen Gültigkeitsbereich.

Nehmen Sie sich einen Moment Zeit, um den folgenden Code zu überprüfen und zu versuchen, zu verstehen, wie er funktioniert:

cs

main

copy
123456789101112131415161718192021222324252627282930313233
using System; namespace ConsoleApp { class Program { static int variable_1 = 1; static void Main(string[] args) { int variable_2 = 2; if (true) { int variable_3 = 3; Console.WriteLine(variable_1); Console.WriteLine(variable_2); Console.WriteLine(variable_3); } Console.WriteLine(variable_1); Console.WriteLine(variable_2); Console.WriteLine(variable_3); // ERROR HERE Console.WriteLine(variable_4); // ERROR HERE // Note: A variable cannot be used before it's defined in the code } static void myMethod() { int variable_4 = 4; Console.WriteLine(variable_1); Console.WriteLine(variable_2); // ERROR HERE Console.WriteLine(variable_3); // ERROR HERE Console.WriteLine(variable_4); } } }

Im obigen Code gibt es vier Variablen:

  • variable_1 - globaler Bereich;
  • variable_2 - lokaler Bereich, definiert in der Main-Methode;
  • variable_3 - lokaler Bereich, definiert im if-Block;
  • variable_4 - lokaler Bereich, definiert in der myMethod-Methode.

Das obige Programm wird möglicherweise überhaupt nicht kompiliert, zeigt jedoch, wo bestimmte Variablen zugänglich sind und wo nicht. Der Bereich des Codes, in dem eine Variable zugänglich ist, wird als Scope dieser Variable bezeichnet.

  • variable_1 ist eine globale Variable, daher ist sie fast überall zugänglich;
  • variable_2 ist im gesamten Main-Methode zugänglich, einschließlich der Unterblöcke wie der if-Bedingung;
  • variable_3 ist nur innerhalb des if-Blocks zugänglich;
  • variable_4 ist nur innerhalb des myMethod-Blocks zugänglich.
Welches Schlüsselwort müssen wir für globale Variablen verwenden (Variablen, die außerhalb einer Methode deklariert werden)?

Welches Schlüsselwort müssen wir für globale Variablen verwenden (Variablen, die außerhalb einer Methode deklariert werden)?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 6. Kapitel 8
We're sorry to hear that something went wrong. What happened?
some-alt