La parte del programa donde se puede acceder a una variable en particular se denomina Alcance de esa variable. Una variable se puede definir en una clase, método, bucle, etc. En C/C++, todos los identificadores tienen un alcance léxico (o estático), es decir, el alcance de una variable se puede determinar en tiempo de compilación e independientemente de la pila de llamadas de funciones. Pero los programas de C# están organizados en forma de clases.
Por lo tanto, las reglas de alcance de las variables de C# se pueden dividir en tres categorías de la siguiente manera:
- Alcance de nivel de clase
- Ámbito de nivel de método
- Ámbito de nivel de bloque
Alcance de nivel de clase
- Al declarar las variables en una clase pero fuera de cualquier método, se puede acceder directamente desde cualquier lugar de la clase.
- Estas variables también se denominan campos o miembros de clase.
- Se puede acceder a la variable de ámbito de nivel de clase mediante los métodos no estáticos de la clase en la que se declara.
- El modificador de acceso de las variables de nivel de clase no afecta su alcance dentro de una clase.
- También se puede acceder a las variables miembro fuera de la clase usando los modificadores de acceso.
Ejemplo:
// C# program to illustrate the // Class Level Scope of variables using System; // declaring a Class class GFG { // from here class level scope starts // this is a class level variable // having class level scope int a = 10; // declaring a method public void display() { // accessing class level variable Console.WriteLine(a); } // here method ends } // here class level scope ends
Ámbito de nivel de método
- Las variables que se declaran dentro de un método tienen alcance a nivel de método. Estos no son accesibles fuera del método.
- Sin embargo, se puede acceder a estas variables mediante los bloques de código anidados dentro de un método.
- Estas variables se denominan variables locales.
- Habrá un error de tiempo de compilación si estas variables se declaran dos veces con el mismo nombre en el mismo ámbito.
- Estas variables no existen después de que finaliza la ejecución del método.
Ejemplo:
// C# program to illustrate the // Method Level Scope of variables using System; // declaring a Class class GFG { // from here class level scope starts // declaring a method public void display() { // from here method level scope starts // this variable has // method level scope int m = 47; // accessing method level variable Console.WriteLine(m); } // here method level scope ends // declaring a method public void display1() { // from here method level scope starts // it will give compile time error as // you are trying to access the local // variable of method display() Console.WriteLine(m); } // here method level scope ends } // here class level scope ends
Ámbito de nivel de bloque
- Estas variables generalmente se declaran dentro de la instrucción for, while, etc.
- Estas variables también se denominan variables de bucle o variables de declaraciones, ya que han limitado su alcance al cuerpo de la declaración en la que se declara.
- Generalmente, un bucle dentro de un método tiene tres niveles de bloques de código anidados (es decir, nivel de clase, nivel de método, nivel de bucle).
- La variable que se declara fuera del bucle también es accesible dentro de los bucles anidados. Significa que una variable de nivel de clase será accesible para los métodos y todos los bucles. La variable de nivel de método será accesible para el bucle y el método dentro de ese método.
- Una variable que se declara dentro del cuerpo de un bucle no será visible desde el exterior del cuerpo del bucle.
Ejemplo:
// C# code to illustrate the Block // Level scope of variables using System; // declaring a Class class GFG { // from here class level scope starts // declaring a method public void display() { // from here method level scope starts // this variable has // method level scope int i = 0; for (i = 0; i < 4; i++) { // accessing method level variable Console.WriteLine(i); } // here j is block level variable // it is only accessible inside // this for loop for (int j = 0; j < 5; j++) { // accessing block level variable Console.WriteLine(j); } // this will give error as block level // variable can't be accessed outside // the block Console.WriteLine(j); } // here method level scope ends } // here class level scope ends
Publicación traducida automáticamente
Artículo escrito por Anshul_Aggarwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA