Ámbito variable de C#
Ámbito variable de C#
En este tutorial, aprenderá sobre el ámbito de las variables en C# con la ayuda de ejemplos.
Un alcance variable se refiere a la disponibilidad de variables en ciertas partes del código.
En C#, una variable tiene tres tipos de alcance:
- Alcance de nivel de clase
- Ámbito de nivel de método
- Ámbito de nivel de bloque
Alcance variable de nivel de clase C#
En C#, cuando declaramos una variable dentro de una clase, se puede acceder a la variable dentro de la clase. Esto se conoce como alcance variable de nivel de clase .
Las variables de nivel de clase se conocen como campos y se declaran fuera de los métodos, constructores y bloques de la clase. Por ejemplo,
using System;
namespace VariableScope {
class Program {
// class level variable
string str = "Class Level";
public void display() {
Console.WriteLine(str);
}
static void Main(string[] args) {
Program ps = new Program();
ps.display();
Console.ReadLine();
}
}
}
Salida
Class Level
En el ejemplo anterior, hemos inicializado una variable llamada str dentro del Programa clase.
Dado que es una variable de nivel de clase, podemos acceder a ella desde un método presente dentro de la clase.
public void display() {
Console.WriteLine(str);
}
Esto se debe a que la variable de nivel de clase es accesible en toda la clase.
Nota :No podemos acceder a la variable de nivel de clase a través de métodos estáticos. Por ejemplo, supongamos que tenemos un método estático dentro del Program clase.
static void display2() {
// Access class level variable
// Cause an Error
Console.WriteLine(str);
}
Alcance variable de nivel de método
Cuando declaramos una variable dentro de un método, no se puede acceder a la variable fuera del método. Esto se conoce como alcance variable de nivel de método. . Por ejemplo,
using System;
namespace VariableScope {
class Program {
public void method1() {
// display variable inside method
string str = "method level";
}
public void method2() {
// accessing str from method2()
Console.WriteLine(str);
}
static void Main(string[] args) {
Program ps = new Program();
ps.method2();
Console.ReadLine();
}
}
}
En el ejemplo anterior, hemos creado una variable llamada str dentro de method1()
.
// Inside method1()
string str = "method level";
Aquí, str es una variable de nivel de método. Por lo tanto, no se puede acceder fuera de method1()
.
Sin embargo, cuando intentamos acceder al str
variable del method2()
// Inside method2
Console.WriteLine(str); // Error code
obtenemos un error.
Error CS0103 The name 'str' does not exist in the current context
Esto se debe a que las variables de nivel de método tienen alcance dentro del método en el que se crean. Por ejemplo,
using System;
namespace VariableScope {
class Program {
public void display() {
string str = "inside method";
// accessing method level variable
Console.WriteLine(str);
}
static void Main(string[] args) {
Program ps = new Program();
ps.display();
Console.ReadLine();
}
}
}
Salida
inside method
Aquí, hemos creado el str variable y accedió a ella dentro del mismo método display()
. Por lo tanto, el código se ejecuta sin ningún error.
Ámbito variable de nivel de bloque en C#
Cuando declaramos una variable dentro de un bloque (for loop, while loop, if...else), solo se puede acceder a la variable dentro del bloque. Esto se conoce como ámbito variable de nivel de bloque. . Por ejemplo,
using System;
namespace VariableScope {
class Program {
public void display() {
for(int i=0;i<=3;i++) {
}
Console.WriteLine(i);
}
static void Main(string[] args) {
Program ps = new Program();
ps.display();
Console.ReadLine();
}
}
}
En el programa anterior, hemos inicializado una variable de nivel de bloque i
dentro del for
bucle.
for(int i=0;i<=3;i++) {
}
Desde i es una variable de nivel de bloque, cuando intentamos acceder a la variable fuera de for bucle,
// Outside for loop
Console.WriteLine(i);
obtenemos un error.
Error CS0103 The name 'i' does not exist in the current context
Lenguaje C