Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Escopos Locais e Globais | Métodos
Noções Básicas de C#
course content

Conteúdo do Curso

Noções Básicas de C#

Noções Básicas de C#

1. Começando
2. Lidando com Tipos de Dados
3. Estruturas de Controle
4. Loops
5. Arrays
6. Métodos

bookEscopos Locais e Globais

O escopo de uma variável é a parte do código onde podemos acessar essa variável. Em C#, existe um escopo global e muitos escopos locais possíveis.

Quando criamos uma variável fora de qualquer método, ela pode ser acessada de quase qualquer lugar no programa, portanto, diz-se que ela tem escopo global. Por exemplo:

cs

main

copy
1234567891011121314151617181920
using System; namespace ConsoleApp { internal class Program { static int myVariable = 10; // Variable with a Global Scope static void testMethod() { // Accessing `myVariable` inside `testMethod` Console.WriteLine($"testMethod: {myVariable}"); } static void Main(string[] args) { // Accessing `myVariable` inside `Main` method Console.WriteLine($"Main Function: {myVariable}"); testMethod(); } } }

Nota

Ao criar uma variável fora de qualquer método, precisamos adicionar a palavra-chave static antes da declaração.

No código acima, conseguimos acessar a variável myVariable tanto no método Main quanto no testMethod. No entanto, isso nem sempre é o caso.

Uma variável declarada dentro de um bloco de código está disponível apenas dentro desse bloco de código, e nos sub-blocos de código, se houver. Por exemplo, uma variável declarada dentro de um método será diretamente acessível apenas dentro desse método. Da mesma forma, uma variável declarada dentro de um bloco if, else if ou else será acessível apenas dentro desse bloco. Diz-se que tal variável tem um escopo local.

É um bom exercício de leitura de código olhar o seguinte código e tentar entendê-lo:

cs

main

copy
123456789101112131415161718192021222324252627282930313233
using System; namespace ConsoleApp { class Program { static int variable_1 = 1; static void Main(string[] args) { int variable_2 = 2; if (true) { int variable_3 = 3; Console.WriteLine(variable_1); Console.WriteLine(variable_2); Console.WriteLine(variable_3); } Console.WriteLine(variable_1); Console.WriteLine(variable_2); Console.WriteLine(variable_3); // ERROR HERE Console.WriteLine(variable_4); // ERROR HERE // Note: A variable cannot be used before it's defined in the code } static void myMethod() { int variable_4 = 4; Console.WriteLine(variable_1); Console.WriteLine(variable_2); // ERROR HERE Console.WriteLine(variable_3); // ERROR HERE Console.WriteLine(variable_4); } } }

No código acima, existem quatro variáveis:

  • variable_1 - Escopo Global;
  • variable_2 - Escopo Local, definido no método Main;
  • variable_3 - Escopo Local, definido no bloco if;
  • variable_4 - Escopo Local, definido no método myMethod;

O programa acima pode não compilar, mas demonstra onde certas variáveis podem ser acessadas e onde não podem. A área do código onde uma variável pode ser acessada é chamada de escopo dessa variável.

  • variable_1 é uma variável global, então é acessível quase em todos os lugares;
  • variable_2 é acessível em todo o método Main, incluindo os sub-blocos como a condição if;
  • variable_3 é acessível apenas dentro do bloco if;
  • variable_4 é acessível apenas dentro do bloco myMethod;
Qual palavra-chave precisamos usar para variáveis globais (variáveis declaradas fora de qualquer método)?

Qual palavra-chave precisamos usar para variáveis globais (variáveis declaradas fora de qualquer método)?

Selecione a resposta correta

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 6. Capítulo 8
some-alt