Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект ООП прогр.doc
Скачиваний:
11
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

4. Собственные пространства имен

Мы уже говорили, что пространства имен – это способ группировки классов. А если речь идет о классах, разработанных самим программистом? Здесь также используются пространства имен. Достаточно окружить несколько описаний классов конструкцией namespace, и они уже образуют новое пространство имен:

namespace AAA

{ <описание класса>

. . .

}

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

Контрольные вопросы:

  1. Состав C# .NET.

  2. Основные концепции и возможности среды .NET.

  3. Типы программ и их отличие.

  4. Пространство имен.

  5. Инструменты среды разработки.

  6. Отладка в C# .NET.

Лекция 3. Система типов данных языка с#

План:

  1. Система типов данных языка С#

  2. Преобразование типов

1. Система типов данных языка с#

Ранее понятие класса отсутствовало, рассматривались только типы данных. В типизированных языках, к которым относится большинство языков программирования, понятие переменной естественным образом связывалось с типом. Если есть тип Т и переменная x типа Т, то это означало, что переменная может принимать значения из множества, заданного типом, и к ней применимы операции, разрешенные типом. В .Net также предпочитают говорить о системе типов, хотя все типы библиотеки FCL являются классами.

В языке C# жестко определено, какие типы относятся к ссылочным, а какие - к значимым.

К значимым типам относятся: логический, арифметический, структуры, перечисление.

К ссылочным типам относятся: массивы, строки и классы относятся.

Все встроенные типы C# однозначно отображаются, и фактически совпадают с системными типами .Net, размещенными в пространстве имен System, базовым классом является класс Object.

В приложении 1 приведены типы данных, их «аналоги» классы и диапазоны значений.

2. Преобразование типов

В C# преобразования делятся на неявные и явные. К неявным относятся те преобразования, результат выполнения которых всегда успешен и не приводит к потере точности данных. Неявные преобразования выполняются автоматически. Для арифметических данных это означает, что в неявных преобразованиях диапазон типа назначения содержит в себе диапазон исходного типа. Например, преобразование из типа byte в тип int относится к неявным, поскольку диапазон типа byte является подмножеством диапазона int. Это преобразование всегда успешно и не может приводить к потере точности. Заметьте, преобразования из целочисленных типов к типам с плавающей точкой относятся к неявным.

К явным относятся разрешенные преобразования, успех выполнения которых не гарантируется или может приводить к потере точности. Преобразование из типа int в тип byte относится к явным, поскольку оно небезопасно и может приводить к потере значащих цифр.

Важным классом преобразований являются преобразования в строковый тип и наоборот. Для встроенных типов определен метод ToString(). Метод ToString можно вызывать явно, но, если явный вызов не указан, то он будет вызываться неявно, всякий раз, когда по контексту требуется преобразование к строковому типу:

string s, s1;

int age;

double money;

s = "Владимир Петров ";

s1 = " Возраст: ";

age = 27;

s = s + s1 + age.ToString();

s1 = " Зарплата: ";

money = 2700.50;

s = s + s1 + money;

Здесь для переменной age метод был вызван явно, а для переменной money он вызывается автоматически.

Преобразования из строкового типа в другие типы, например, в арифметический, должны выполняться явно. Для этой цели можно использовать соответствующие методы класса Convert, о котором речь будет идти далее.

Необходимо обязательно запомнить, что все переменные в языке С# должны быть инициализированы до их первого использования.

Для преобразования строкового представления целого числа в тип int мы используем метод int.Parse(), который реализован для всех числовых типов данных. Таким образом, если нам потребуется преобразовать строковое представление в вещественное, мы можем воспользоваться методом float.Parse() или double.Parse(). В случае, если соответствующее преобразование выполнить невозможно, то выполнение программы прерывается и генерируется исключение System.FormatExeption (входная строка имела неверный формат).

Иерархия типов данных схематично приведена на рисунке 2.1.

Рисунок 2.1 – Иерархия типов данных

Контрольные вопросы:

  1. Какие целочисленные типы данных существуют в C#?

  2. Назовите два типа данных с плавающей точкой.

  3. Какие типы данных могут использоваться в качестве операндов логических операторов?

  4. Что такое операция приведения типа?

  5. Можно ли без выполнения операции приведения типа присвоить значение типа short переменной типа int? А значение типа byte - переменной типа char?

  6. Справедливо ли утверждение, что переменная типа bool может хранить любое значение, поскольку любое ненулевое значение является истинным?