Contenido del Curso
Conceptos básicos de C#
Conceptos básicos de C#
Ámbitos Locales y Globales
El alcance de una variable es la parte del código donde podemos acceder a esa variable. En C# hay un alcance global y muchos posibles alcances locales.
Cuando creamos una variable fuera de cualquier método, se puede acceder desde casi cualquier parte del programa, por lo tanto, se dice que tiene un alcance global. Por ejemplo:
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(); } } }
Nota
Al crear una variable fuera de cualquier método, necesitamos agregar la palabra clave
static
antes de la declaración.
En el código anterior, pudimos acceder a la variable myVariable
tanto en el método Main
como en el testMethod
. Sin embargo, esto no siempre es el caso.
Una variable declarada dentro de un bloque de código solo está disponible dentro de ese bloque de código, y los sub-bloques de código, si los hay. Por ejemplo, una variable declarada dentro de un método solo será directamente accesible dentro de ese método. De manera similar, una variable declarada dentro de un bloque if
, else if
o else
solo será accesible dentro de ese bloque. Se dice que tal variable tiene un ámbito local.
Es un buen ejercicio de lectura de código mirar el siguiente código e intentar entenderlo:
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); } } }
En el código anterior hay cuatro variables:
variable_1
- Alcance Global;variable_2
- Alcance Local, definida en el método Main;variable_3
- Alcance Local, definida en el bloqueif
;variable_4
- Alcance Local, definida en el métodomyMethod
;
El programa anterior puede que no compile en absoluto, pero demuestra dónde se pueden acceder a ciertas variables y dónde no. El área de código donde se puede acceder a una variable se llama el alcance de esa variable.
variable_1
es una variable global, por lo que es accesible casi en todas partes;variable_2
es accesible en todo el métodoMain
, incluidos los sub-bloques como la condiciónif
;variable_3
es accesible solo dentro del bloqueif
;variable_4
es accesible solo dentro del bloquemyMethod
;
¡Gracias por tus comentarios!