Главная страница
Навигация по странице:

  • Целочисленные типы данных

  • Вещественные типы данных

  • Логический тип данных

  • Составные и более сложные

  • Конспект лекций (C#)-unlocked. 1 Основные сведения о C# Особенности языка


    Скачать 1.97 Mb.
    Название1 Основные сведения о C# Особенности языка
    Дата15.01.2019
    Размер1.97 Mb.
    Формат файлаpdf
    Имя файлаКонспект лекций (C#)-unlocked.pdf
    ТипДокументы
    #63730
    страница1 из 13
      1   2   3   4   5   6   7   8   9   ...   13

    1
    Содержание
    1 Основные сведения о C# .................................................................................................. 4 1.1 Особенности языка .................................................................................................. 4 1.2 Типы данных ............................................................................................................ 5 1.3 Переменные ............................................................................................................. 7 1.4 Константы (литералы) ............................................................................................ 8 1.5 Операторы, используемые при построении выражений ..................................... 8 1.6 Класс Object ........................................................................................................... 10 1.7 Класс Math .............................................................................................................. 11 1.8 Класс Convert ......................................................................................................... 12 1.9 Пространство имён ................................................................................................ 13 1.10 Типы, допускающие значение null .................................................................... 16 2 Операторы и конструкции С# ....................................................................................... 17 2.1 Операторы присваивания ..................................................................................... 17 2.2 Приведение типов ................................................................................................. 17 2.3 Операторы инкремента и декремента ................................................................. 19 2.4 Операторные скобки {} ........................................................................................ 19 2.5 Условный оператор if ............................................................................................ 20 2.6 Логические операторы «И» и «ИЛИ» ................................................................. 21 2.7 Условный оператор ? : .......................................................................................... 21 2.8 Оператор выбора switch и оператор прерывания break ..................................... 22 2.9 Оператор цикла for ................................................................................................ 24 2.10 Оператор цикла while .......................................................................................... 25 2.11 Оператор цикла do...while ................................................................................... 26 2.12 Операторы прерываний break (для циклов) и continue ................................... 26 2.13 Оператор new ....................................................................................................... 27 2.14 Массивы ............................................................................................................... 27 2.14.1 Одномерные массивы .............................................................................. 27 2.14.2 Многомерные массивы ............................................................................ 28 2.14.3 Ступенчатые массивы .............................................................................. 29 2.14.4 Работа с массивами как с объектами ..................................................... 30 2.15 Оператор цикла foreach....................................................................................... 32 2.16 Строки................................................................................................................... 32 2.17 Перечисления ....................................................................................................... 38 2.18 Обработка исключений ....................................................................................... 39 2.18.1 Класс Exception и стандартные исключения ......................................... 40 2.18.2 Блок try...catch ........................................................................................... 41 2.18.3 Блок try...finally ......................................................................................... 43 2.18.4 Блок try...catch...finally ............................................................................. 44 2.18.5 Оператор throw ......................................................................................... 45 3 Классы. Основные понятия ........................................................................................... 47 3.1 Общая схема .......................................................................................................... 47 3.2 Спецификаторы доступа ....................................................................................... 47

    2 3.3 Поля ........................................................................................................................ 48 3.4 Создание объекта и доступ к его членам ............................................................ 48 3.5 Методы ................................................................................................................... 49 3.5.1 Перегрузка методов ................................................................................... 52 3.5.2 Новое в версии C# 4.0 ................................................................................ 54 3.6 Конструкторы ........................................................................................................ 56 3.7 Деструкторы ........................................................................................................... 58 3.8 Инициализаторы объектов ................................................................................... 59 3.9 Свойства ................................................................................................................. 59 3.10 Индексаторы ........................................................................................................ 62 4 Классы. Расширенное использование .......................................................................... 66 4.1 Статические классы и члены классов ................................................................. 66 4.2 Наследование ......................................................................................................... 68 4.2.1 Наследование и конструкторы .................................................................. 70 4.2.2 Переопределение членов класса ............................................................... 71 4.3 Полиморфизм ......................................................................................................... 73 4.3.1 Виртуальные методы ................................................................................. 76 4.3.2 Абстрактные классы и члены классов ..................................................... 78 4.3.3 Операторы as и is ........................................................................................ 79 4.3.4 Модификатор sealed ................................................................................... 81 4.4 Перегрузка операторов ......................................................................................... 81 5 Интерфейсы ..................................................................................................................... 85 6 Делегаты, лямбда-выражения и события ..................................................................... 92 6.1 Делегаты ................................................................................................................. 92 6.2 Анонимные методы и лямбда-выражения .......................................................... 95 6.3 События .................................................................................................................. 96 7 Универсальные типы .................................................................................................... 101 7.1 Общая схема ........................................................................................................ 101 7.2 Ограничения по параметрам типа ..................................................................... 102 7.2.1 Ограничение на базовый класс ............................................................... 103 7.2.2 Ограничение на интерфейс ..................................................................... 104 7.2.3 Ограничение на конструктор .................................................................. 105 7.2.4 Ограничения ссылочного типа и типа значения ................................... 106 7.2.5 Установление связи между двумя параметрами с помощью ограничения ........................................................................................... 106 7.3 Параметры типы в методах ................................................................................ 107 7.4 Некоторые универсальные типы С# .................................................................. 108 7.4.1 Класс Array................................................................................................ 108 7.4.2 Класс List ............................................................................................ 112 7.4.3 Класс LinkedList ................................................................................ 114 7.4.4 Класс Queue ....................................................................................... 117 7.4.5 Класс Stack ......................................................................................... 118 7.4.6 Классы SortedSet и HashSet ....................................................... 118 7.4.7 Классы Dictionary и SortedDictionaryTValue> .................................................................................................. 122

    3 8 Работа с файлами .......................................................................................................... 125 8.1 Класс File .............................................................................................................. 125 8.2 Работа с файлами как с потоками ...................................................................... 127 8.2.1 Класс FileStream ....................................................................................... 128 8.2.2 Класс StreamReader .................................................................................. 129 8.2.3 Класс StreamWriter ................................................................................... 131 8.2.4 Класс BinaryReader ................................................................................... 132 8.2.5 Класс BinaryWriter ................................................................................... 134

    4
    1
    Основные сведения о C#
    Язык C# происходит от двух распространённых языков программирования: C и C++. От языка C он унаследовал синтаксис, многие ключевые слова и операторы, а от C++ – усовершенствованную объектную модель. Кроме того, C# близко связан с
    Java
    1
    Имея общее происхождение, но во многом отличаясь, С# и Java похожи друг на друга как близкие, но не кровные родственники. В обоих языках поддерживается распределённое программирование и применяется промежуточный код для обеспе- чения безопасности и переносимости, но отличия кроются в деталях реализации.
    Кроме того, в обоих языках предоставляется немало возможностей для проверки ошибок при выполнении, обеспечения безопасности и управляемого исполнения, хотя и в этом случае отличия кроются в деталях реализации. Но в отличие от Java язык С# предоставляет доступ к указателям – средствам программирования, кото- рые поддерживаются в C++. Следовательно, С# сочетает в себе эффективность, при- сущую C++, и типовую безопасность, характерную для Java. Более того, компро- миссы между эффективностью и безопасностью в этом языке программирования тщательно уравновешены и совершенно прозрачны.
    Однако по сравнению с C++, С# имеет ряд отличий, упрощающих синтаксис и устраняющих вероятность появления некоторых ошибок в программах.
    1.1
    Особенности языка
    К особенностям языка C# (некоторые особенности заимствованы из C++) можно отнести следующие:

    язык является объектно-ориентированным, поэтому:

    даже простейшая программа состоит, как минимум, из одного класса;

    отсутствуют глобальные переменные и методы;

    простейшие типы являются классами и поддерживают ряд базовых операций;

    язык чувствителен к регистру символов, т.е. идентификаторы count и
    Count счи- таются различными;

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

    переменные могут быть описаны в любом месте программы, при этом область ви- димости переменных зависит от места (блока программы) их описания;

    все массивы могут изменять размеры (фактически путём создания нового масси- ва);

    идентификаторы переменной и типа могут совпадать;

    используется «сборка мусора», поэтому явное освобождение памяти во многих случаях не используется.
    1
    Здесь и далее некоторые фрагменты конспекта взяты из книг:
    Шилдт Г. C# 3.0: Полное руководство / Г. Шилдт.–М.: ООО «И.Д. Вильямс»,2010.–992 с.:ил.
    Шилдт Г. C# 4.0: Полное руководство / Г. Шилдт.–М.: ООО «И.Д. Вильямс»,2011.–1056 с.:ил.

    5
    1.2
    Типы данных
    Любые данные, используемые в программе, размещаются в оперативной па- мяти компьютера. Для того чтобы программа могла правильно интерпретировать содержимое памяти, ей требуется знать структуру данных, хранящихся в этой памя- ти, которая определяется типом данных. Типы данных могут быть как заранее предопределёнными в среде программирования, так и созданными программистом при разработке программы.
    В C# все общие типы данных делятся на два вида: типы значения и ссылоч-
    ные типы. Переменные типа значения содержат сами значения, в то время как пе- ременные ссылочного типа содержат ссылку на место в памяти, где значения можно найти. Также переменная ссылочного типа может содержать значение
    null
    , гово- рящее о том, что переменная ни на что не указывает.
    Общая структура типов приведена на рисунке 1.1.
    Рисунок 1.1 – Структура типов данных
    Целочисленные типы данных. Целочисленные типы данных (см. табли- цу 1.1) отличаются друг от друга размером занимаемой памяти и, следовательно, диапазоном целых чисел, которые они могут хранить.
    Таблица 1.1 – Характеристика целочисленных типов данных
    1
    Наименование Размер, байт
    Диапазон значений byte
    1 0…255 sbyte
    1
    –128 … 127 1
    Здесь и далее все значения даются для среды программирования Microsoft Visual C# 2008 Express Edition.

    6
    Продолжение таблицы 1.1
    Наименование Размер, байт
    Диапазон значений char
    1 2 от U+0000 до U+ffff short
    2
    –32,768 … 32,767 ushort
    2 0 … 65 535 int
    4
    –2 147 483 648 … 2 147 483 647 uint
    4 0 … 4 294 967 295 long
    8
    –9 223 372 036 854 775 808 …
    9 223 372 036 854 775 807 ulong
    8 0 … 18 446 744 073 709 551 615
    Вещественные типы данных. Применяются для хранения данных, имеющих дробную часть. В отличие от целочисленных типов, вещественные типы данных от- личаются друг от друга не только диапазоном хранимых значений, но и точностью представления числа. Характеристики вещественных типов данных приведены в таблице 1.2.
    Таблица 1.2 – Характеристика вещественных типов данных
    Наименование Размер, байт
    Приблизительный диапазон значений
    Число десятичных знаков float
    4
    От ±1,5e−45 до ±3,4e38 7 double
    8
    От ±5,0e−324 до ±1,7e308 15-16
    Десятичный тип данных
    decimal предназначен для применения в финансо- вых расчётах. Этот тип имеет разрядность 16 байт для представления числовых зна- чений в пределах от ±1,0e−28 до ±7,9e28. При обычных арифметических вычисле- ний с плавающей точкой характерны ошибки округления десятичных значений. Эти ошибки исключаются при использовании типа decimal
    , который позволяет пред- ставить числа с точностью 28-29 десятичных разрядов. Благодаря тому что этот тип данных способен представлять десятичные значения без ошибок округления, он особенно удобен для расчётов, связанных с финансами.
    Логический тип данных имеет наименование bool и может принимать одно из двух значений: true
    (истина) или false
    (ложь).
    Символьный тип данных, предназначенный для хранения одного символа
    Юникода, имеет наименование char
    . Символ задаётся в апострофах (одиночных ка- вычках).
    Строковый тип данных имеет наименование string и предназначен для хранения последовательности символов (данный тип будет рассмотрен ниже в от- дельном разделе). Строковые константы задаются в кавычках.
    Составные и более сложные типы данных будут рассмотрены ниже.
    1
    В большинстве случаев используется для хранения символьных данных. Для целочисленных значений луч- ше не использовать.

    7
    Числовые типы данных обладают некоторыми методами и полями, среди ко- торых можно выделить:

    Parse(s)
    – преобразует строку s
    в число соответствующего типа, например int.Parse("1")
    преобразует строку «1» в число 1 типа int
    . В методе
    Parse могут быть указаны дополнительные параметры, характеризующие допустимые для преобразования форматы строки s
    ;

    TryParse(s, out r)
    – преобразует строку s
    в число соответствующего типа и записывает результат в r
    . Метод возвращает логическое значение, показывающее, было ли выполнено преобразование. В методе
    TryParse могут быть указаны до- полнительные параметры, характеризующие допустимые для преобразования форматы строки s
    . Например double.TryParse("1.2", out d)
    вернёт true
    , если разделителем дробной и целой части является точка.

    MinValue, MaxValue
    – возвращает минимальное или максимальное значение для заданного типа, например int.MaxValue вернёт максимальное значение для типа int
      1   2   3   4   5   6   7   8   9   ...   13


    написать администратору сайта