Скачиваний:
2
Добавлен:
04.09.2023
Размер:
1.17 Mб
Скачать

8 Структура программы на языке c#. Понятие пространства имен. Иерархия пространств имен. Видимость имен.

Понятие

Пространство имен (namespace) в C# представляет собой некий контейнер для логического объединения именованных сущностей, таких как классы, интерфейсы, перечисления и тому подобное.

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

Объявления пространств имен с областью действия файла позволяют объявить, что все типы в файле находятся в одном пространстве имен.

Пространства имен часто используются в программировании на C# двумя способами.

Первый способ — .NET использует пространства имен для упорядочения множества ее классов следующим образом:

System.Console.WriteLine("Hello World!");

System является пространством имен, а Console — это класс в нем. Ключевое using слово можно использовать, чтобы полное имя не требовалось, как показано в следующем примере:

using System;

Console.WriteLine("Hello World!");

Второй способ — объявление собственных пространств имен поможет вам контролировать область имен классов и методов в более крупных проектах. Используйте ключевое слово namespace, чтобы объявить пространство имен, как показано в следующем примере:

namespace SampleNamespace

{

class SampleClass

{

public void SampleMethod()

{

System.Console.WriteLine(

"SampleMethod inside SampleNamespace");

}

}

}

Пространства имен имеют следующие свойства:

  • Они помогают упорядочивать проекты с большим объемом кода.

  • Они разделяются с помощью . оператора. (оператор в виде точки)

  • Директива using позволяет не указывать название пространства имен для каждого класса.

  • Пространство имен global является корневым: global::System всегда будет ссылаться на пространство имен System в .NET.

Видимость и иерархия

Имена (названия типов) объявленные во внешнем пространстве имен могут использоваться во внутреннем пространстве без указания полного уточненного имени.

namespace Outer

{

class Class1 {}

namespace Inner

{

class Class2 : Class1 {}

}

}

Если необходимо сослаться на другую ветвь в иерархии пространств имен, нужно использовать частично уточненное имя (partially qualified name).

namespace MyTradingCompany

{

    namespace Common

    {

        class ReportBase {}

    }

    namespace ManagementReporting

    {

        class SalesReport : Common.ReportBase {} // Частично уточненное имя

    }

}

Сокрытие имен: Если внутреннее и внешнее пространства имен содержат объявление типов с одинаковыми именами, то при использовании во внутреннем пространстве имен предпочтение будет отдано внутреннему типу. Чтобы сослаться на тип из внешнего пространства, необходимо использовать полное уточненное имя.

9 Операторы. Основные языка с#. Арифметические и логические операторы. Бинарные и унарные операторы. Составные операторы. Понятие перегрузки операторов.

Оператор – встроенный в язык способ взаимодействия переменных.

Основные операторы (Здесь речь либо про перечисление типов, либо про отдельную и очень условную категорию. Если первый вариант, что более вероятно, то всё это представлено в заголовке вопроса. Если второй вариант, что менее вероятно, но упомяну на всякий случай, то можно сказать, что есть отдельная очень условная категория, которая по порядку выполнения операций стоит самой первой. К примеру, обращение к элементу массива типа a[i], операции автоинкремента ++ или использование тега new при переопределении значения переменной будет основным оператором. Их там много, но достаточно знать, что любое обращение к переменным внутри переменных, операции авто+ и авто- и использование тегов при определении переменной будет в большинстве случаев основным оператором.):

  • Арифметические – операторы стандартных математических операций с числовыми и другими переменными. + – сложение, - – вычитание, * – умножение, / – деление, % – деление по модулю, ++ – инкремент, -- – декремент.

  • Логические и условные – операторы для работы с переменными типа bool. & – И, | – ИЛИ, ^ – исключающее ИЛИ, ! – НЕ, && – укороченное И для условных конструкций, || – укороченное ИЛИ для условных конструкций, ==/!=/>/</>=/<= – все операторы сравнения для условных конструкций.

  • Унарные – операторы для действий с одной переменной. +/- – присвоение переменной знака +/-, ++/-- – инкремент и декремент, ! – НЕ.

  • Бинарные – операторы для действий с двумя переменными. Все другие операторы, которые не являются унарными, например, + как сложение двух переменных.

  • Составные операторы – операторы укороченной записи, представляемые как аналог арифметической или логической операции с переменной и единицей. +=/-=/*=//= – арифметические операции типа (х = х знак 1), |= – логическое ИЛИ с 1, ^= – логическое исключающее ИЛИ с 1, op= логическое присваивание типа (х = х op у).

Перегрузка операторов – доступный для ряда операторов способ определения действий при возникновении в коде выбранного оператора. Если проще, то перегрузка операторов нужна для того, чтобы реализовывать ситуации типа (массив1 + массив2 = поэлементная сумма элементов массива). Если нужно сделать так, чтобы использование определённого оператора выполняло какие-то нестандартные для этого оператора действия, можно перегрузить переменную и получить перегрузку. При выполнении операций сначала проверяются пользовательские перегрузки, а при их отсутствии используются стандартные инструкции по выполнению операций.