Escopo da variável C#
Escopo da variável C#
Neste tutorial, você aprenderá sobre escopo de variável em C# com a ajuda de exemplos.
Um escopo de variável refere-se à disponibilidade de variáveis em certas partes do código.
Em C#, uma variável tem três tipos de escopo:
- Escopo em nível de turma
- Escopo no nível do método
- Escopo em nível de bloco
Escopo da variável de nível de classe C#
Em C#, quando declaramos uma variável dentro de uma classe, a variável pode ser acessada dentro da classe. Isso é conhecido como escopo de variável de nível de classe .
As variáveis de nível de classe são conhecidas como campos e são declaradas fora dos métodos, construtores e blocos da classe. Por exemplo,
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();
}
}
}
Saída
Class Level
No exemplo acima, inicializamos uma variável chamada str dentro do Programa classe.
Como é uma variável de nível de classe, podemos acessá-la a partir de um método presente dentro da classe.
public void display() {
Console.WriteLine(str);
}
Isso ocorre porque a variável de nível de classe é acessível em toda a classe.
Observação :Não podemos acessar a variável de nível de classe por meio de métodos estáticos. Por exemplo, suponha que temos um método estático dentro do Program classe.
static void display2() {
// Access class level variable
// Cause an Error
Console.WriteLine(str);
}
Escopo da variável de nível de método
Quando declaramos uma variável dentro de um método, a variável não pode ser acessada fora do método. Isso é conhecido como escopo de variável de nível de método . Por exemplo,
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();
}
}
}
No exemplo acima, criamos uma variável chamada str dentro de
method1()
.
// Inside method1()
string str = "method level";
Aqui, str é uma variável de nível de método. Portanto, não pode ser acessado fora de
method1()
. No entanto, quando tentamos acessar o
str
variável do method2()
// Inside method2
Console.WriteLine(str); // Error code
obtemos um erro.
Error CS0103 The name 'str' does not exist in the current context
Isso ocorre porque as variáveis de nível de método têm escopo dentro do método em que são criadas. Por exemplo,
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();
}
}
}
Saída
inside method
Aqui, criamos o str variável e acessada dentro do mesmo método
display()
. Assim, o código é executado sem nenhum erro. Escopo da variável de nível de bloco em C#
Quando declaramos uma variável dentro de um bloco (for loop, while loop, if..else), a variável só pode ser acessada dentro do bloco. Isso é conhecido como escopo de variável de nível de bloco . Por exemplo,
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();
}
}
}
No programa acima, inicializamos uma variável de nível de bloco
i
dentro do for
ciclo.
for(int i=0;i<=3;i++) {
}
Desde i é uma variável de nível de bloco, quando tentamos acessar a variável fora do for ciclo,
// Outside for loop
Console.WriteLine(i);
obtemos um erro.
Error CS0103 The name 'i' does not exist in the current context
Linguagem C