Ambiti Locali e Globali
L'ambito di una variabile è la parte del codice in cui possiamo accedere a quella variabile. In C#, esistono un ambito globale e molti possibili ambiti locali.
Quando creiamo una variabile al di fuori di qualsiasi metodo, essa può essere accessibile praticamente ovunque nel programma, quindi si dice che ha ambito globale:
main.cs
1234567891011121314151617181920using 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(); } } }
Nota
Quando si dichiara una variabile al di fuori di qualsiasi metodo, è importante includere la parola chiave
staticprima della sua dichiarazione.
Nell'esempio sopra, abbiamo acceduto alla variabile myVariable sia nel metodo Main che nel metodo testMethod. Tuttavia, questo non è sempre possibile.
Una variabile dichiarata all'interno di un blocco di codice è accessibile solo all'interno di quel blocco e di eventuali sotto-blocchi di codice che contiene. Ad esempio, una variabile dichiarata all'interno di un metodo è direttamente accessibile solo all'interno di quel metodo. Allo stesso modo, una variabile dichiarata all'interno di un blocco if, else if o else è accessibile solo all'interno di quel blocco. Una variabile di questo tipo si dice abbia un ambito locale.
Prenditi un momento per esaminare il seguente codice e cerca di comprenderne il funzionamento:
main.cs
123456789101112131415161718192021222324252627282930313233using 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); } } }
Nel codice sopra ci sono quattro variabili:
variable_1- ambito globale;variable_2- ambito locale, definita nel metodo Main;variable_3- ambito locale, definita nel bloccoif;variable_4- ambito locale, definita nel metodomyMethod.
Il programma sopra potrebbe non compilare affatto ma dimostra dove certe variabili possono essere accessibili e dove non possono esserlo. L'area di codice in cui una variabile può essere accessibile è chiamata ambito di quella variabile.
variable_1è una variabile globale quindi è accessibile quasi ovunque;variable_2è accessibile in tutto il metodoMain, inclusi i sotto-blocchi come la condizioneif;variable_3è accessibile solo all'interno del bloccoif;variable_4è accessibile solo all'interno del bloccomyMethod.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Can you explain the difference between global and local scope in more detail?
Can you give an example of when to use a global variable versus a local variable?
What happens if I try to access a variable outside of its scope?
Awesome!
Completion rate improved to 1.56
Ambiti Locali e Globali
Scorri per mostrare il menu
L'ambito di una variabile è la parte del codice in cui possiamo accedere a quella variabile. In C#, esistono un ambito globale e molti possibili ambiti locali.
Quando creiamo una variabile al di fuori di qualsiasi metodo, essa può essere accessibile praticamente ovunque nel programma, quindi si dice che ha ambito globale:
main.cs
1234567891011121314151617181920using 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(); } } }
Nota
Quando si dichiara una variabile al di fuori di qualsiasi metodo, è importante includere la parola chiave
staticprima della sua dichiarazione.
Nell'esempio sopra, abbiamo acceduto alla variabile myVariable sia nel metodo Main che nel metodo testMethod. Tuttavia, questo non è sempre possibile.
Una variabile dichiarata all'interno di un blocco di codice è accessibile solo all'interno di quel blocco e di eventuali sotto-blocchi di codice che contiene. Ad esempio, una variabile dichiarata all'interno di un metodo è direttamente accessibile solo all'interno di quel metodo. Allo stesso modo, una variabile dichiarata all'interno di un blocco if, else if o else è accessibile solo all'interno di quel blocco. Una variabile di questo tipo si dice abbia un ambito locale.
Prenditi un momento per esaminare il seguente codice e cerca di comprenderne il funzionamento:
main.cs
123456789101112131415161718192021222324252627282930313233using 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); } } }
Nel codice sopra ci sono quattro variabili:
variable_1- ambito globale;variable_2- ambito locale, definita nel metodo Main;variable_3- ambito locale, definita nel bloccoif;variable_4- ambito locale, definita nel metodomyMethod.
Il programma sopra potrebbe non compilare affatto ma dimostra dove certe variabili possono essere accessibili e dove non possono esserlo. L'area di codice in cui una variabile può essere accessibile è chiamata ambito di quella variabile.
variable_1è una variabile globale quindi è accessibile quasi ovunque;variable_2è accessibile in tutto il metodoMain, inclusi i sotto-blocchi come la condizioneif;variable_3è accessibile solo all'interno del bloccoif;variable_4è accessibile solo all'interno del bloccomyMethod.
Grazie per i tuoi commenti!