Alcance de las variables en C#

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *