Операторы объявления
Операторы выражений
Операторы выбора
Операторы итераций
Операторы перехода
Внедренный оператор. В операторах do, while, for и foreach, всегда есть внедренный оператор, следующий за ними. Этот внедренный оператор может быть либо одним оператором, либо несколькими операторами, заключенными в скобки ({}) в блоке оператора. Даже однострочные внедренные операторы могут быть заключены в скобки ({}).
Вложенные блоки операторов. Блоки операторов могут быть вложенными.
Оператор объявления объявляет локальную переменную или константу. Операторы объявления разрешается использовать в блоках, но запрещается использовать как внедренные операторы.
Оператор = называется простым оператором присваивания.
Области объявления
Объявление определяет имя в области объявления, которому принадлежит объявление.
Нельзя использовать одно имя для двух или более объявлений в одной области объявления за исключением перегруженных членов.
Пространства имен могут содержать объявления типов и вложенных пространств имен.
|
|
Пространства имен и типы, имеющие родительское пространство имен, являются членами глобального пространства имен.
Пространства имен и типы, объявленные в рамках пространства имен, являются членами данного пространства имен.
Каждое объявление типа: класса, структуры, интерфейса, делегата, перечисляемого типа создает новую область объявления.
Каждое объявление метода, объявление индексатора, объявление оператора, объявление конструктора экземпляров создает новую область объявления, которая называется областью объявлений локальных переменных.
Каждый блок или блок_switch, а также инструкции for, foreach и using создают область объявлений для локальных переменных и локальных констант.
Блоки, встречающиеся в качестве тела члена функции, вложены в область объявлений локальных переменных, объявленной этими функциями для соответствующих параметров. Следовательно, наличие, к примеру, метода с одинаковыми именами локальной переменной и параметра является ошибкой.
Области видимости
Областью видимости имени является часть текста программы, в рамках которой можно ссылаться на переменную, имеющее данное имя. Области могут быть вложенные, в рамках вложенного блока невозможно объявить локальную переменную с именем, совпадающим с именем локальной переменной во внешнем блоке.
Пример программы, которая завершится с ошибкой «Невозможно объявить локальную переменную с именем "a" в этой области видимости, т.к. другое значение "a", уже используется в области видимости "родительский или текущий"
|
|
using System;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
int a = 0;
Console.WriteLine(a);
{
int a = 6;
Console.WriteLine(a);
}
}
}
}
Пример. Объявление локальных переменных, которое не приведет к ошибке.
using System;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
{
int a = 0;
Console.WriteLine(a);
}
{
int a = 6;
Console.WriteLine(a);
}
}
}
}
Областью члена пространства имен, объявленного объявлением члена пространства имен, является полный текст программы.
Областью члена, объявленного объявлением члена типа, является тело типа, в котором сделано объявление.
Областью параметра, объявленного в объявлении метода, является тело метода данного объявления метода.
Областью локальной переменной, объявленной в объявлении локальной переменной, является блок, в котором содержится объявление.
Областью локальной переменной, объявленной в блоке ветвления оператора switch, является блок ветвления.
Областью локальной переменной, объявленной в инициализаторе for оператора for, является инициализатор for, условие for, итератор for и содержащий оператор оператора for.
Областью локальной константы, объявленной в объявлении локальной константы, является блок, в котором содержится объявление. Ссылка на локальную константу в текстовой позиции, предшествующей декларатору константы, является ошибкой времени компилирования.
Переменные
В C# определено семь категорий переменных: статические переменные, переменные экземпляра, элементы массива, параметры по значению, параметры по ссылке, выходные параметры и локальные переменные.
Локальные переменные
Локальную переменную можно объявить в блоке, в операторе for, в операторе switch или операторе using, а также в операторе foreach или в конструкции catch в операторе try.
Объявление локальной переменной состоит из типа локальной переменной, идентификатора, определяющего имя переменной, за которым могут следовать оператор присваивание
и инициализатор локальной переменной, присваивающий переменной начальное значение.
При объявлении локальная переменная не инициализируется автоматически и поэтому не имеет значения по умолчанию (считается не имеющей начального значения).
Пример. Объявление нескольких локальных переменных.
int x = 1, y, z = x * 2;
Примеры. Операторы языка.
Оператор_итераций for
Цикл for повторно выполняет оператор или блок операторов, пока определенное выражение не примет значение false.
В цикле for может содержаться инициализатор for, условие for, итератор for, содержащий оператор оператора for (внедренный оператор)
оператор_for:
for (инициализатор_forнеобязательно; условие_forнеобязательно; итератор_forнеобязательно) внедренный_оператор
Инициализатор содержит объявление локальной переменной
Условием является логическое выражение
Итератор это выражение
В следующем примере значение int i записывается в консоль, и i увеличивается на 1 за каждое прохождение цикла.
using System;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
int i = 0;
for (i = 1; i <= 5; i++)
{
Console.WriteLine(i);
}
Console.WriteLine(i);
}
}
}
Все выражения оператора for являются необязательными. Например, следующий оператор используется для создания бесконечного цикла:
C#
for (;;)
{
//...
}
Оператор_итераций while
Оператор while выполняет внедренный оператор несколько раз (возможно, ни разу) в зависимости от соблюдения условия.
оператор_while:
while ( логическое_выражение ) внедренный_оператор
Оператор while выполняется следующим образом.
Вычисляется логическое_выражение Если результатом логического выражения является true, управление передается внедренному оператору. Если управление достигает конечной точки внедренного оператора (возможно, в результате выполнения оператора continue), управление передается в начало оператора while.
Если значением логического выражения является false, управление передается в конечную точку оператора while.
|
|