Entendiendo el ámbito de variables en C#: Nivel de clase, método y bloque
Entendiendo el ámbito de variables en C#
Esta guía explica cómo funciona el ámbito de variables en C#, cubriendo ámbitos de nivel de clase, método y bloque con ejemplos claros y prácticos.
El ámbito de variable determina dónde se puede acceder a una variable dentro de tu código. En C#, encuentras tres ámbitos principales.
- Ámbito de nivel de clase
- Ámbito de nivel de método
- Ámbito de nivel de bloque
Ámbito de variable de nivel de clase
Cuando una variable se declara dentro de una clase pero fuera de cualquier método o constructor, es un campo y puede ser accedida por todos los miembros de esa clase. Esto se conoce como ámbito de nivel de clase.
using System;
namespace VariableScope {
class Program {
// Campo de nivel de clase
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 este ejemplo, str es un campo, por lo que está disponible en toda la clase Program, incluyendo el método Display.
Nota importante: Los campos de instancia no son accesibles desde métodos estáticos a menos que se use una instancia. Por ejemplo:
static void Display2() {
// Esto causará error en tiempo de compilación
Console.WriteLine(str);
}
Ámbito de variable de nivel de método
Las variables declaradas dentro de un método son locales a ese método. No pueden referenciarse fuera del método que las define, lo que se llama ámbito de nivel de método.
using System;
namespace VariableScope {
class Program {
public void Method1() {
// Variable local
string str = "method level";
}
public void Method2() {
// Intentar acceder a str aquí causará error
Console.WriteLine(str);
}
static void Main(string[] args) {
Program ps = new Program();
ps.Method2();
Console.ReadLine();
}
}
}
Intentar usar str en Method2 resulta en error del compilador:
Error CS0103: The name 'str' does not exist in the current context
Por el contrario, una variable local puede usarse dentro del mismo método:
using System;
namespace VariableScope {
class Program {
public void Display() {
string str = "inside method";
Console.WriteLine(str);
}
static void Main(string[] args) {
Program ps = new Program();
ps.Display();
Console.ReadLine();
}
}
}
Salida
inside method
Ámbito de variable de nivel de bloque en C#
Las variables declaradas dentro de un bloque —como bucles, sentencias if u otros ámbitos anidados— solo son accesibles dentro de ese bloque. Esto se conoce como ámbito de nivel de bloque.
using System;
namespace VariableScope {
class Program {
public void Display() {
for (int i = 0; i <= 3; i++) {
// i está confinado a este bucle for
}
// Console.WriteLine(i); // ❌ error en tiempo de compilación
}
static void Main(string[] args) {
Program ps = new Program();
ps.Display();
Console.ReadLine();
}
}
}
Aquí, el contador del bucle i no puede referenciarse después del bucle, porque su ámbito termina con el bloque.
Lenguaje C
- Dominando punteros en C++: Conceptos, ejemplos y aplicaciones prácticas
- Variables, tipos de datos y constantes en C – Guía práctica
- Entendiendo las variables en C: Tipos, reglas de nomenclatura y gestión de memoria
- Entendiendo las reglas de alcance en C: Variables locales, globales y formales
- Dominando punteros en C: Pasos prácticos para programación avanzada
- Dominando Argumentos Variables en C: Guía Práctica
- Comprender las asignaciones en Verilog: tipos, sintaxis y mejores prácticas
- Modelado a nivel de puertas: Puentes entre esquemas de hardware y código Verilog
- Comprender e imprimir timescales de Verilog en cualquier alcance
- Dominando la palabra clave global en Python: Cómo y cuándo usarla
- Entendiendo los Tipos de Variables en Java: Guía Completa