Собственные пространства имен — КиберПедия 

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

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

2021-04-18 53
Собственные пространства имен 0.00 из 5.00 0 оценок
Заказать работу

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

namespace AAA

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

...

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

}

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

Файл x.cs Файл y.cs
namespace AAA { class A {...} class B {...} } namespace BBB { class C {...} class D {...} } namespace BBB { class E {...} class F {...} } namespace AAA { class G {...} class H {...} }

 

Особенности языка C#

Ранее рассмотренные особенности программирования на C# не относились к самому языку, а лишь касались множества доступных для использования методов классов. В данной главе обратим внимание на некоторые особенности в наиболее стабильной части языка – в стандартных операторах. Большинство этих особенностей является результатом очищения языка C++ от своего тяжелого наследия в лице сравнительно низкоуровневого предшественника C.

Полноценный логический тип данных

Помните, как замысловато был представлен логический тип данных в C – числовое значение 0 воспринималось как «ложь», а любое другое – как «истина». Так что цикл while(5){...} хотя и выглядел странновато, оказывался бесконечным циклом. Кроме того, в C операция присваивания имела два результата – побочный (сам факт копирования значения в правую часть) и основной – значение правой части после присваивания. Это позволяло выполнять цепочечные присваивания (a=b=c;). В силу этих двух особенностей многие невнимательные программисты (а кто же всегда будет внимателен?) допускали маленькую опечатку – вместо операции сравнения == в условных выражения использовали операцию присваивания =). Хуже всего, что с точки зрения компилятора эта конструкция воспринималась правильно. В результате цикл while(a=5){...} также становился бесконечным циклом.

В языке C# никакого хитроумного моделирования логических значений нет – вместо этого имеется полноценный логический тип bool, на самом деле реализованный классом Boolean (помните int и Int32?).

В результате компилятор обнаруживает ошибку в условном выражении a=1 и сообщает, что не может неявно преобразовать целую величину в логическую.

Оператор switch

Отметим две особенности, отличающие оператор switch в языках C# и C++:

1. C# не поддерживает “провала” передачи управления, возникающего при отсутствии оператора break.

Фрагмент программы

int a; a=2;

switch (a)

{ case 1: cout<<”Один”;

case 2: cout<<”Два”;

case 3: cout<<”Три”;

case 4: cout<<”Четыре”;

}

приводил к выводу на экран строки «ДваТриЧетыре».

В C# аналогичный оператор будет считаться компилятором ошибочным – C# требует в конце каждого исполняемого блока указывать оператор break, либо goto, либо return. Таким образом, можно написать следующее:

int a; a=2;

switch (a)

{ case 1: Console.Write(”Один”); break;

case 2: Console.Write(”Два”); break;

case 3: Console.Write(”Три”); break;

case 4: Console.Write(”Четыре”); break;

}

В результате на экране появится только слово «Два»

2. В качестве выражения и констант, отмечающих варианты оператора switch можно использовать строковые данные (тип string)

string a; a=”Два”;

switch (a)

{ case ”Один”: Console.Write(1); break;

case ”Два”: Console.Write(2); break;

case ”Три”: Console.Write(3); break;

case ”Четыре”: Console.Write(4); break;

}

Такой фрагмент выводит на экран число 2.

Основные классы

Ниже рассмотрим использование наиболее популярных классов платформы.NET

Класс Math

Класс Console

Как вы уже успели заметить, этот класс используется для организации взаимодействия пользователя с компьютером с помощью двух устройств: клавиатура (для ввода информации) и монитор (для вывода). В предыдущих примерах были использованы методы ReadLine и WriteLine. Отметим ещё одну полезную особенность метода WriteLine.

Допустим, нужно вывести на экран значения трёх переменных x, y и z. это можно сделать следующим образом:

Console.WriteLine(“x=”+x+”, y=”+y+”, z=”+z);

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

Console.WriteLine(“x={0}, y={1}, z={2}”,x,y,z);

В этом случае метод WriteLine имеет несколько параметров. Первый обязательно является строкой, определяющей структуру выводимой информации. В этой строке присутствуют специальные элементы ({0}{1}{2}), вместо которых выводятся значения соответствующих других параметров (в нашем примере x, y и z).

Кроме ReadLine и WriteLine класс Console содержит дополнительные методы для управления клавиатурой и выводом информации на монитор. Например, с помощью метода SetCursorPosition можно управлять позицией курсора.

Класс Convert

Мы уже знаем о существовании метода ToInt32, осуществляющего преобразование в целое число. Кроме того, в этом классе имеется ещё ряд методов преобразования: ToBoolean, ToByte, ToChar, ToDateTime, ToDecimal, ToDouble, ToSingle, ToString. Этот (неполный!) перечень методов позволяет сделать следующие выводы:

1. Система основных типов языка в основном унаследована от языка С++, однако, в ней появились и новшества.

Как уже говорилось, в C# имеется полноценный логический тип данных Boolean.

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

Тип Decimal это разновидность вещественного типа данных используемого, когда важно избежать накопления погрешностей вычислений.

Два основных вещественных типа языка C++ (float и double) в C# «поменялись местами» - стандартным теперь является Double. Это означает, что вещественные константы, записываемые обычным образом, относятся к типу Double. Поэтому оператор  a = 0.5  будет признан компилятором ошибочным (несовместимость типов в присваивании), если переменная a имеет тип float.    

Преобразованием в тип float занимается метод  ToSingle.

2. Каждый из методов преобразования является перегруженным. Это позволяет применять метод с одним и тем же именем для преобразования разнотипной исходной информации. Например:

Convert.ToInt32(3.2);

Convert.ToInt32(false);

Convert.ToInt32(“Hello”);

В связи с этим полезно будет выполнть следующее задание: написать программу, проверяющую результаты применения методов преобразования к различным типам данных. Выявить комбинации типов, приводящие к ошибкам и дать этому объяснение.


Поделиться с друзьями:

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

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.01 с.