Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Язык C# и основы платформы .NET.docx
Скачиваний:
37
Добавлен:
11.05.2015
Размер:
178.68 Кб
Скачать

Литература

1. Албахари, Дж. C# 5.0. Справочник. Полное описание языка: Пер. с англ. / Дж. Албахари, Б. Албахари. – 5-е изд. – М.: ООО «И.Д. Вильямс», 2013. – 1008 с.: ил.

2. Рихтер, Дж. CLR via C#. Программирование на платформе Microsoft .NET Framework 4.5 на языке C# / Дж. Рихтер. – 4-е изд. – Спб.: Питер, 2013. – 896 с.: ил.

3. Троелсен, Э. Язык программирования C# 5.0 и платформа .NET4.5 / Э. Троелсен. – 6-е изд. – М.: ООО «И.Д. Вильямс», 2013. – 1312 с.: ил.

4. Хейлсберг, А. Язык программирования C#. КлассикаComputersScience. / А. Хейлсберг, М. Торгерсен, С. Вилтамут, П. Голд. – 4-е изд. – Спб.: Питер, 2012. – 784 с.: ил.

5. Цвалина, К. Инфраструктура программных проектов: соглашения, идиомы и шаблоны для многократно используемых библиотек .NET. : Пер. с англ. / К. Цвалина. – М.: ООО «И.Д. Вильямс», 2011. – 416 с.: ил.

1Файлcsc.exeобычно расположен в папкеMicrosoft.NET\Framework\<версия>в системном каталоге.

1Типы с плавающей запятой удовлетворяют стандартуIEEE 754 (см. сайтieee.orgили статью по адресуsoftelectro.ru/ieee754.html).

1Это, в частности, означает, что у литералов можно вызывать экземплярные методы типа.

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

1Не указаныоперации с указателями, специфичные длянебезопасного кода(unsafecode).

1Для целочисленных типов, типаboolи перечислений допустимо использовать соответствующие типы с поддержкойnull(например,int?).

1В C# имеется директиваusingдля импорта пространств имён. Следует различать директивуusingи операторusing.

1Объявлениеint[,][] dataзадаёт двумерный массив, состоящий из одномерных массивов. Иными словами, спецификаторы размерностей читаются слева направо.

1Только классы и структуры могут содержать вложенные типы.

2В CLR есть модификатор доступа, соответствующийprotectedиinternal. Но при помощи языка C# такой уровень доступа описать нельзя.

3Важно: вложенный класс может обращаться к закрытым элементам объемлющего типа.

4Разделяемыми могут быть не только классы, но также структуры и интерфейсы.

1Для доступа к константе применяется синтаксисимя-класса.имя-константы.

1В приведённом примере не производится проверка корректности индекса и значения оценки.

2Индексаторы транслируются в методы с именамиget_Item()иset_Item(). Изменить имена методов можно, используя атрибут[IndexerName].

1В отличие от языка C#, CLR позволяет создавать статические индексаторы.

1ЯзыкC# допускает толькометодырасширения, свойств и индексаторов расширения не существует.

1Если класс содержит статический конструктор (возможно, пустой), компиляторC# генерирует код, выполняющий инициализацию статических полей классанепосредственноперед первым использованием класса. Без статического конструктора такая инициализация проводитсяв произвольный момент доиспользования класса.

1Формально, отobjectне наследуются типы-указатели, используемые в неуправляемом коде (например,int*), а также интерфейсы (но интерфейсы приводятся кobject).

1Операция упаковки выполняется и в случае, когда переменной типа интерфейс присваивается переменная типа значения. Этот аспект будет разобран при рассмотрении интерфейсов.

1CLRгарантирует, что статический конструктор структуры будет запущен до первого обращения к статическому элементу структуры. Вызов экземплярного конструктора с параметрами также приводит к запуску статического конструктора. Однако статический конструкторне запускаетсяпри вызове экземплярного конструктора без параметров.

2В отличие от классов, в структуре конструктор без параметров присутствует даже при объявлении пользовательского конструктора.

1Интерфейс не является полноценным типом, так как он задаёт только внешнее поведение объектов. Внутреннюю структуру и реализацию поведения обеспечивает класс, реализующий интерфейс; именно поэтому «экземпляров интерфейса» в чистом виде не бывает, любая переменная типа «интерфейс» содержит экземпляры конкретных классов.

1Универсальные методы могут заменить перекрытие методов в пользовательском типе, если алгоритмы работы различных версий перекрытых методов не зависят от типов параметров.

2Хотя обращения к свойствам и индексаторам транслируются в вызовы методов, в языкеC# не существует универсальных свойств и универсальных индексаторов.

1КлассSystem.Nullableсодержит методы сравнения значений типа, допускающего значениеnull, а также метод получения базового типа для типа, допускающего значениеnull.

1Делегаты относятся к неизменяемым типам. Поэтому методыCombine()иRemove()возвращают новые объекты-делегаты.

1Если параметров несколько, скобки нужно указывать. Когда лямбда-оператор не имеет входных параметров, указываются пустые скобки.

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

2Это справедливо для классов и структур, но не для интерфейсов.

3Поведение, аналогичное событиям, можно получить, используя открытие поля делегатов. Ключевое словоeventзаставляет компилятор проверять, что описание и генерация события происходят в одном типе, и запрещает для события все операции, кроме+=и-=.

Минск 2014