Области видимости переменных в C#.

Область видимости переменной (её ещё называют контекстом переменной) – это фрагмент кода, в пределах которого будет доступна данная переменная. Область видимости в C# определяются следующими правилами:

  • Поле или переменная – член класса находится в области видимости до тех пор, пока в этой области находится содержащий это поле класс;
  • Локальная переменная находится в области видимости до тех пор, пока закрывающая фигурная скобка не укажет конец блока операторов или метода, в котором она объявлена;
  • Локальная переменная, объявленная в операторах цикла for, while или подобных им, видима в пределах тела цикла.

Рассмотрим несколько примеров:

for (int i = 0; i < 6; i++)
{
  Console.Write(" {0}", i);
}       // здесь заканчивается область видимости i
int k = 6 * i;  // оператор не будет выполнен

После закрывающей скобки цикла for переменная i больше не будет "видна", следовательно, последний оператор не будет выполнен. Рассмотрим еще один пример:

public static int Main()
{
int n = 15;
for (int i = 0; i < 5; i++)
{
int n = 10;  // ошибка
Console.WriteLine(n + i);
}
return 0;
}

Переменная n, определённая перед началом цикла for, будет находиться в области видимости до тех пор, пока не завершится метод Main(). Вторая переменная n якобы объявлена в контексте цикла, но он является вложенным в контекст метода Main(), поэтому компилятор не может различить эти две переменные и не допустит объявления второй переменной с именем n.

В некоторых случаях два идентификатора с одинаковыми именами и одинаковой областью видимости можно различить, при этом компилятор допустит объявление второй переменной.

Язык C# делает различие между переменными, объявленными на уровне поля и переменными, объявленные в методах (локальными переменными). В качестве примера рассмотрим следующий код:

using System;
namespace ConsoleApplication
{
  class Program
   {
     static string name = "Max";

     public static void Main()
     {
      string name = "Bob";
      Console.WriteLine(name);
      return;
     }
   }
}

Когда вы запустите этот код, вы увидите строку "Bob". Приоритет у локальных переменных выше, чем у членов класса.

 
Поделиться в facebook
Facebook
Поделиться в twitter
Twitter
Поделиться в vk
VK
Поделиться в google
Google+
Поделиться в email
Email

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Группа в VK

Помощь проекту

Обнаружили опечатку?

Сообщите нам об этом, выделите текст с ошибкой и нажмите Ctrl+Enter, будем очень признательны!

Свежие статьи

Похожие статьи

Entity Framework

Entity Framework

ADO.NET Entity Framework (EF) — объектно-ориентированная технология доступа к данным, является object-relational mapping (ORM) решением для .NET Framework от Microsoft. Предоставляет возможность взаимодействия с объектами

 
Работа с базой данных в C#

Работа с базой данных в C#

В данной статье мы подробно поговорим о разработке небольшого приложения с помощью Visual Studio базы данных и языка C#. Советуем поэтапно выполнять все инструкции из

 
Создание сканера портов

Создание сканера портов

В прошлой статье “Сокеты в C#” мы познакомились с сокетами и подробно рассмотрели классы для работы с ними. В этой статье мы разработаем простое приложение

 
Сокеты в С#

Сокеты в С#

Сокет – это один конец двухстороннего канала связи между двумя программами, работающими в сети. Используя два сокета, можно передавать данные между разными процессами (локальными или

 

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: