- 1 Основные сведения о C#
- 1.1 Особенности языка
- 1.2 Типы данных
- 1.3 Переменные
- Знакомство с C#
- Hello world
- Числа в C#
- Ветви и циклы
- Коллекция списков
- 101 пример по LINQ
- Руководство по C# — Часть 1
- Часть 1 — Часть 2
- 1. C# и платформа .NET
- 2. Создание приложений .NET с использованием C#
- 3. Основы C#
- 4. Массивы, кортежи и строки
- 5. Классы и объекты
- 6. Перегрузка функций-членов класса
- 7. Наследование и полиморфизм
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 с.:ил.
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.
Продолжение таблицы 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 В большинстве случаев используется для хранения символьных данных. Для целочисленных значений лучше не использовать.
Числовые типы данных обладают некоторыми методами и полями, среди которых можно выделить: 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.3 Переменные
Для описания переменных используется конструкция, формальное описание которой 1 имеет вид: <тип данных>[=] [, [=] . ]; Примеры : double d; int a, b=10; int c = b+7; int d = 0xFF; // d = 255; Если при описании переменной ей сразу присваивается значение, и данная строчка выполняется несколько раз (например, в цикле), то значение присваивается переменной при каждом выполнении строки. Переменные могут быть типизированы неявно. В этом случае вместо типа данных указывается ключевое слово var и требуется обязательное применение бло- ка = . 1 При описании конструкций будут использоваться следующие обозначения: описывает блок, вместо которого требуется ввести необходимые данные. Однако выделенные жирным угловые скобки обязательны; [текст] описывает блок, использование которого необязательно. Однако выделенные жирным квадратные скобки обязательны и не образуют необязательного блока; … характеризует возможность повторения необязательного блока, внутри которого это обозначение находится.тип>
Знакомство с C#
Приветствуем вас в ознакомительном разделе руководств по C#. Занятия начинаются с интерактивного кода, который можно запускать в браузере. Прежде чем приступить к интерактивным урокам, вы можете ознакомиться с основами C#, просмотрев серию видеороликов «C# для начинающих».
В первых занятиях с помощью небольших фрагментов кода объясняются основные понятия языка C#. Вы изучите основы синтаксиса C# и научитесь работать с такими типами данных, как строки, числа и логические значения. Вся серия интерактивна, и уже через считанные минуты вы будете писать и запускать собственный код. Для первых занятий не требуются какие-либо знания в области программировании или опыт работы с языком C#.
Эти руководства можно проходить в разных средах. В них описываются одни и те же основные понятия. Различие в том, где именно вы будете работать.
- В браузере на платформе документации. В этом случае окно готового к запуску кода C# внедряется на страницы документации. Вы пишете и выполняете C# код в браузере.
- В среде Microsoft Learn. Эта схема обучения содержит несколько модулей для изучения основ C# .
- В Jupyter в проекте Binder. Вы можете поэкспериментировать с кодом C# в записной книжке Jupyter в проекте Binder.
- На локальном компьютере. После изучения кода в интерактивном режиме можно скачать пакет SDK для .NET и создавать программы на компьютере.
Все ознакомительные руководства, в которых используется пример приложения «Hello World», можно проходить в веб-браузере или в локальной среде разработки. В конце каждого руководства вам предлагается на выбор возможность пройти следующее занятие в браузере или на локальном компьютере. Чтобы настроить среду и продолжить изучение следующего руководства на компьютере, можно воспользоваться соответствующими ссылками.
Hello world
В руководстве Hello World вы создадите самую простую программу на C#. Вы ознакомитесь с типом string и способами работы с текстом. Можно также использовать схему обучения в Microsoft Learn или Jupyter в проекте Binder.
Числа в C#
Из руководства Числа в C# вы узнаете, как на компьютере хранятся числа и как выполнять вычисления с разными числовыми типами. Вы ознакомитесь с основами округления и научитесь выполнять математические вычисления с помощью C#. Это руководство можно изучить, используя локальный компьютер.
В этом руководстве предполагается, что вы уже прошли занятие Hello World.
Ветви и циклы
В руководстве Ветви и циклы представлены общие принципы организации ветвления кода в зависимости от значений, хранящихся в переменных. Вы узнаете, что такое поток управления, являющийся основой принятия решений и выбора различных действий в программах. Это руководство можно изучить, используя локальный компьютер.
В этом руководстве предполагается, что вы уже прошли занятия Hello World и Числа в C#.
Коллекция списков
Занятие Коллекция списков содержит обзор типа «Коллекция списков», в котором хранятся последовательности данных. Вы узнаете, как добавлять и удалять элементы, выполнять их поиск и сортировать списки. Вы ознакомитесь с различными типами списков. Это руководство можно изучить, используя локальный компьютер.
В этом руководстве предполагается, что вы уже прошли перечисленные выше занятия.
101 пример по LINQ
Для работы с этим примером требуется глобальный инструмент dotnet-try. После установки инструмента и клонирования репозитория try-samples можно изучить LINQ с помощью набора из 101 примера, которые можно запускать в интерактивном режиме. Вы можете исследовать различные способы отправки запросов к данным, исследования данных и преобразования последовательностей данных.
Руководство по C# — Часть 1
Данное руководство было создано для быстрого и наглядного обучения всем тонкостям программирования на языке C#.
Часть 1 — Часть 2
1. C# и платформа .NET
2. Создание приложений .NET с использованием C#
- .NET Framework 4.0 SDK
- Компилятор csc.exe
- Типы приложений .NET
- Работа с Visual Studio 2010
- Создание проекта в VisualStudio 2010
- Изучение проекта и заполнение его кодом
- Компоновка проекта
- Отладка кода
- Рефакторинг кода
- Расширение кода
- Утилита Class Designer
- Интегрируемая система документации .NET Framework 4.0
3. Основы C#
- Основы объектно-ориентированного программирования
- Простая программа на C#
- Комментарии
- Переменные
- Область видимости переменных, константы
- Типы данных
- Литералы
- Преобразования типов
- Арифметические операторы
- Операторы отношения и логические операторы
- Оператор присваивания
- Поразрядные операторы
- Тернарный оператор
- Условные операторы
- Циклы for и while
- Циклы do while и foreach
- Операторы перехода
4. Массивы, кортежи и строки
5. Классы и объекты
- Классы
- Класс Object
- Создание объектов
- Методы
- Конструкторы
- Сборка мусора и деструкторы
- Ключевое слово this
- Доступ к членам класса
- Модификаторы параметров
- Необязательные и именованные аргументы
- Рекурсия
- Ключевое слово static
- Индексаторы
- Свойства
- Модификаторы доступа в аксессорах