Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Escopos Local e Global | Métodos
Fundamentos de C#

bookEscopos Local e Global

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

Quando criamos uma variável fora de qualquer método, ela pode ser acessada de praticamente qualquer lugar do programa, portanto, diz-se que ela possui escopo global:

main.cs

main.cs

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 declarar uma variável fora de qualquer método, é importante incluir a palavra-chave static antes de sua declaração.

No exemplo acima, acessamos a variável myVariable tanto no método Main quanto no testMethod. No entanto, isso nem sempre é possível.

Uma variável declarada dentro de um bloco de código só é acessível dentro desse bloco e de quaisquer sub-blocos de código que ele contenha. Por exemplo, uma variável declarada dentro de um método só é acessível diretamente dentro desse método. Da mesma forma, uma variável declarada dentro de um bloco if, else if ou else só é acessível dentro desse bloco. Tal variável possui escopo local.

Reserve um momento para analisar o código a seguir e tente entender como ele funciona:

main.cs

main.cs

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, definida no método Main;
  • variable_3 - escopo local, definida no bloco if;
  • variable_4 - escopo local, definida 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, portanto é acessível quase em todo lugar;
  • variable_2 é acessível em todo o método Main, incluindo sub-blocos como a condição if;
  • variable_3 é acessível apenas dentro do bloco if;
  • variable_4 é acessível apenas dentro do bloco do método myMethod.
question mark

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

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 6. Capítulo 8

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Awesome!

Completion rate improved to 1.59

bookEscopos Local e Global

Deslize para mostrar o menu

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

Quando criamos uma variável fora de qualquer método, ela pode ser acessada de praticamente qualquer lugar do programa, portanto, diz-se que ela possui escopo global:

main.cs

main.cs

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 declarar uma variável fora de qualquer método, é importante incluir a palavra-chave static antes de sua declaração.

No exemplo acima, acessamos a variável myVariable tanto no método Main quanto no testMethod. No entanto, isso nem sempre é possível.

Uma variável declarada dentro de um bloco de código só é acessível dentro desse bloco e de quaisquer sub-blocos de código que ele contenha. Por exemplo, uma variável declarada dentro de um método só é acessível diretamente dentro desse método. Da mesma forma, uma variável declarada dentro de um bloco if, else if ou else só é acessível dentro desse bloco. Tal variável possui escopo local.

Reserve um momento para analisar o código a seguir e tente entender como ele funciona:

main.cs

main.cs

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, definida no método Main;
  • variable_3 - escopo local, definida no bloco if;
  • variable_4 - escopo local, definida 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, portanto é acessível quase em todo lugar;
  • variable_2 é acessível em todo o método Main, incluindo sub-blocos como a condição if;
  • variable_3 é acessível apenas dentro do bloco if;
  • variable_4 é acessível apenas dentro do bloco do método myMethod.
question mark

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

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

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