Спонсор: Microsoft
Воронежский государственный университет
Опубликован: 04.02.2009 | Доступ: свободный | Студентов: 8218 / 665 | Оценка: 4.14 / 3.78 | Длительность: 19:54:00
Лекция 6:

Введение в C# и платформу Visual Studio.Net

Выражения и операторы C#.

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

В таблице ниже приведен список операций C#.

Категория операций Операции
Арифметические + – * / %
Логические (boolean и побитовые) & | ^ ! ~ && ||
Строковые +
Инкремент и декремент ++ --
Сдвиг >> <<
Сравнение == != < > <= >=
Присвоение = += –= *= /= %= &= |= ^= <<= >>=
Обращение к члену класса .
Индексация []
Приведение типа (Cast) ()
Условие ?:
Создание объекта new()
Информация о типе is sizeof typeof
Управление исключениями checked unchecked
Косвенности и адресации * –> [] &

Имя и тип переменной задаются при ее объявлении и остаются неизменными в течение всего времени ее жизни. Особенностью языка C# является требование обязательной инициализации переменной до начала ее использования. Попытка использовать неинициализированную переменную приводит к ошибкам, обнаруживаемым еще на этапе компиляции.

По используемым выражениям и операторам C# похож на C++. Так в программах на C# используются такие операторы как:

  • Оператор присваивания ( = )
  • Составной оператор ( {} )
  • Операторы выбора: if-else и switch
  • Операторы цикла: for, while
  • Операторы break и continue
  • Оператор return
  • Оператор перехода goto

Кроме того, введены несколько новых инструкций. Например, оператор foreach позволяет получить доступ ко всем элементам массива или коллекции поочередно, в порядке возрастания индексов. Его синтаксис:

foreach (тип идентификатор in контейнер) оператор

Интерфейсы C#

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

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

Среди интерфейсов, встроенных в библиотеку базовых классов .NET, можно особо выделить такие как:

  • IEnumerable (для работы с наборами объектов, в т.ч. с использованием оператора foreach ).
  • IClonable (копирование объектов).
  • IComparable (для сравнения и сортировки объектов).

Пространство имен System.Collections, предназначенное для работы с наборами объектов, поддерживает интерфейсы:

  • ICollection (определяет общие характеристики класса набора элементов).
  • IComparer, IDictionary (позволяет представлять содержимое объекта в виде пар имя-значение).
  • IDictionaryEnumerator (нумерация содержимого объекта, поддерживающего IDictionary ).
  • IEnumerable, IEnumerator.
  • IHashCodeProvider (возвращает хэш-код с помощью выбранного алгоритма хэширования).
  • IList (обеспечивает методы добавления, удаления и индексирования элементов в списке объектов).

Сериализация объектов

При работе с программной системой зачастую возникает необходимость в сериализации объектов. Под сериализацией понимают процесс сохранения объектов в долговременной памяти (файлах) в период выполнения системы. Под десериализацией понимают обратный процесс - восстановление состояния объектов, хранимых в долговременной памяти.

Механизмы сериализации C# и Framework.Net поддерживают два формата сохранения данных - в бинарном файле и XML файле. В первом случае данные при сериализации преобразуются в бинарный поток символов, который при десериализации автоматически преобразуется в нужное состояние объектов. Другой возможный преобразователь запоминает состояние объекта в формате XML.

Если класс объявить с атрибутом [Serializable], то в него встраивается стандартный механизм сериализации, поддерживающий глубокую сериализацию. Если по каким-либо причинам стандартная сериализация разработчика не устраивает, то класс следует объявить наследником интерфейса ISerializable, реализация методов которого позволит управлять процессом сериализации.

Михаил Олифиренко
Михаил Олифиренко
Александр Табачук
Александр Табачук

Это только у меня не работает кнопочка "Получить код DreamSpark"? Пишет "временно не доступно..." А когда заработает?