Kursinhalt
C# Grundlagen
C# Grundlagen
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:
main
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:
main
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 imif
-Block;variable_4
- lokaler Bereich, definiert in dermyMethod
-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 gesamtenMain
-Methode zugänglich, einschließlich der Unterblöcke wie derif
-Bedingung;variable_3
ist nur innerhalb desif
-Blocks zugänglich;variable_4
ist nur innerhalb desmyMethod
-Blocks zugänglich.
Danke für Ihr Feedback!