Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Learn Local & Global Scopes | Methods
C# Basics
course content

Course Content

C# Basics

C# Basics

1. Getting Started
2. Dealing with Data Types
3. Control Structures
4. Loops
5. Arrays
6. Methods

book
Local & Global Scopes

The scope of a variable is the part of the code where we can access that variable. In C#, there is a global scope and many possible local scopes.

When we create a variable outside of any method, it can be accessed from almost anywhere in the program, therefore, it is said to have global scope:

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(); } } }

Note

When you declare a variable outside of any method, it's important to include the static keyword before its declaration.

In the example above, we accessed the variable myVariable in both the Main method and the testMethod. However, this isn't always possible.

A variable declared within a code block is only accessible within that block and any sub-code blocks it contains. For instance, a variable declared inside a method is only directly accessible within that method. Similarly, a variable declared inside an if, else if, or else block is only accessible within that block. Such a variable is said to have a local scope.

Take a moment to review the following code and try to understand how it works:

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); } } }

In the above code there are four variables:

  • variable_1 - global scope;
  • variable_2 - local scope, defined in the Main method;
  • variable_3 - local scope, defined in the if block;
  • variable_4 - local scope, defined in the myMethod method.

The above program may not compile at all but demonstrates where certain variables can be accessed and where they cannot. The area of code where a variable can be accessed is called the scope of that variable.

  • variable_1 is a global variable so it is accessible almost everywhere;
  • variable_2 is accessible throughout the Main method, including the sub-blocks like the if condition;
  • variable_3 is accessible only inside the if block;
  • variable_4 is accessible only inside the myMethod block.
Which keyword do we need to use for global variables (variables declared outside any method)?

Which keyword do we need to use for global variables (variables declared outside any method)?

Select the correct answer

Everything was clear?

How can we improve it?

Thanks for your feedback!

Section 6. Chapter 8
We're sorry to hear that something went wrong. What happened?
some-alt