Локальные и глобальные переменные
Часто необходимо использовать дополнительные переменные, которые будут использоваться только в подпрограмме. Такие переменные называются локальными (или местными), с ними можно работать только внутри той подпрограммы, в которой они созданы.
 
Область видимости локальной переменной - это блок, ограниченный фигурными скобками, внутри которого она объявлена.
Основная программа в С# - это тоже подпрограмма, поэтому все переменные объявленные внутри 
void Main(), - это 
локальные переменные. Остальные подпрограммы про локальные переменные других подпрограмм ничего не "знают".
Таким образом, можно ограничить область действия (область видимости) переменной только той подпрограммой, где она действительно нужна. В программировании такой прием называется 
инкапсуляцией  - сокрытие переменной от ее изменения извне.
Если необходимо объявить переменную, которая была бы видна в любом месте программы (в любой подпрограмме), то такие переменные описываются вне всех подпрограмм (см. программу 3 из таблицы ниже).
Такие переменные называются 
глобальными.
В С# при старте программы все глобальные переменные автоматически обнуляются (логические переменные принимают значение false).
Проанализируйте три программы:
	
		
			| 1) В этой программе переменная i локальная. Локальная переменная описывается внутри подпрограммы. | 
			2) Здесь, даже если есть переменная i в основной программе (со значением 7), будет создана новая локальная переменная i со значением 5.  
			При выполнении этой программы на экране появится значение 75. | 
			3) В этой программе существует глобальная переменная i. Ее значение можно изменить внутри подпрограммы, и внутри основной программы. 
			Процедура будет работать с глобальной переменной i и ей будет присвоено новое значение, равное 2. На экран выводится значение 2. | 
		
		
			
			
static void test()
{
    int i = 5;
    Console.Write("i");
}
			 | 
			
			
static void test()
{
    int i = 5; 
    Console.Write("i");
}
static void Main()
{
   int i = 7;
   Console.Write("i");
   test();
}
			 | 
			
			
using System;
class Program 
{
    int i;
    static void test() 
    {
        i = 2;
    }
    static void Main()
    {
        test();
        Console.Write("i");
    }
}
			 |