· Интерфейс определяет поведение объекта и содержит описание поддерживаемых членов. Ими могут быть методы, свойства и события.
· Объект, реализующий некоторый интерфейс, может взаимодействовать с любым другим объектом, которому необходим этот интерфейс.
· За реализацию членов интерфейса отвечает класс или структура, в которой этот интерфейс реализован. В классах, как и в структурах, допускается реализация нескольких интерфейсов.
· Класс или структура, реализующая некоторый интерфейс, должна обеспечить реализацию всех членов, объявленных в этом интерфейсе.
· В С# члены интерфейса реализуются двумя способами:
ü реализация члена с именем, сигнатурой и уровнем доступа, идентичными соответствующему члену интерфейса. Такие члены доступны как через реализующий класс, так и через интерфейс;
ü явная реализация члена интерфейса с указанием его полного имени. Такие члены доступны только через интерфейс.
Пример. Объявление и инициализация переменной типа bool. Вывод данных на консоль.
using System;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
bool b = true;
// WriteLine автоматически конвертирует значение переменной b в текст.
Console.WriteLine(b);
}
}
}
Тип char представляет 16-разрядные целые числа без знака в диапазоне от 0 до 65535. Набор возможных значений для типа char соответствует набору символов Юникода.
Пример. Объявление и инициализация четырех переменных типа char, имеющих одно и тоже значение - символ X.
Консолью называется окно операционной системы, в котором пользователи взаимодействуют с операционной системой. Приложение может считывать пользовательский ввод из стандартного входного потока, записывать обычные данные в стандартный выходной поток и записывать данные об ошибках в стандартный поток сообщений об ошибках.
Пример. Чтение из стандартного входного потока и запись в стандартный выходной поток
using System;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введите x");
String name = Console.ReadLine();
int a = int.Parse(name);
Console.WriteLine(a);
}
}
}
В примере статический метод Console.WriteLine("Введите x") записывает данные в стандартный выходной поток; статический метод Console.ReadLine() считывает входные данные из стандартного входного потока. Возвращаемое методом Console.ReadLine() значение присваивается переменной name типа String; статический метод int.Parse(name) преобразует строковое представление числа в эквивалентное ему 32-битовое целое число со знаком. Возвращаемое методом значение присваивается переменной а типа int; Статический метод Console.WriteLine(a) выводит результирующее целочисленное значение на консоль. Пример
Использование аргументов командной строки в консольном приложении.
К аргументам командной строки можно получить доступ при помощи дополнительного массива строк, связанного с методом Main. При выполнении приложения в Visual Studio можно указать аргументы командной строки в Страница "Отладка" в конструкторе проектов.
System.Console.WriteLine("Arg[{0}] = [{1}]", i, args[i]);
}
}
}
}
Идентификаторы используются для обозначения переменных. В идентификаторах разрешены: знак подчеркивания в качестве начального символа, escape-последовательности Юникода, символ «@» в качестве префикса, чтобы можно было использовать ключевые слова в качестве идентификаторов.
Ключевое слово — это зарезервированная последовательность символов.
Операторы языка
Действия программы выражаются с помощью операторов. Оператор может состоять из одной строки кода, которая заканчивается точкой с запятой, или из ряда однострочных операторов в блоке. Блок оператора заключен в скобки ({}) и может содержать вложенные блоки.
Операторы объявления
Операторы выражений
Операторы выбора
Операторы итераций
Операторы перехода
Внедренный оператор. В операторах 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);
}
}
}
}
Все выражения оператора for являются необязательными. Например, следующий оператор используется для создания бесконечного цикла:
C#
for (; ; )
{
// ...
}
Оператор_итераций while
Оператор while выполняет внедренный оператор несколько раз (возможно, ни разу) в зависимости от соблюдения условия.
оператор_while: while ( логическое_выражение ) внедренный_оператор
Оператор while выполняется следующим образом.
Вычисляется логическое_выражение Если результатом логического выражения является true, управление передается внедренному оператору. Если управление достигает конечной точки внедренного оператора (возможно, в результате выполнения оператора continue), управление передается в начало оператора while.
Если значением логического выражения является false, управление передается в конечную точку оператора while.