Шаг 288.
Язык программирования C#. Начала.
Немного о разном. Использование пространства имен (окончание)

    На этом шаге мы рассмотрим задание и использование псевдонимов.

    Инструкция using, кроме известного нам способа использования, позволяет создавать еще и псевдонимы. С псевдонимами мы тоже имели дело. Например, мы использовали инструкцию string, которая является псевдонимом выражения System.String. Инструкция object является псевдонимом для выражения System.Object. Список можно продолжить.

    При создании псевдонима инструкция using используется в таком формате:

  using имя = выражение;

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

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace pr288_1
{
    // Используется первое пространство имен: 
    using First;
    // Используется псевдоним для класса 
    // из второго пространства имен: 
    using myclass = Second.MyClass;
    // Описание первого пространства имен: 
    namespace First { 
        class MyClass { 
            public int num; 
            public MyClass(int n) { 
                num = n;
            }
            public void show() {
                Console.WriteLine("Класс из First: " + num);
            }
        }
    }

    // Описание второго пространства имен:
    namespace Second { 
        class MyClass {
            public string txt; 
            public MyClass(string t) { 
                txt = t;
            }
            public void show() {
                Console.WriteLine("Класс из Second: " + txt);
            }
        }
    }

    // Главный класс:
    class Program
    {
        static void Main()
        {
            // Объект класса из первого пространства имен:
            MyClass A = new MyClass(123);
            // Объект класса из второго пространства имен: 
            myclass B = new myclass("text");
            A.show();
            B.show();
            // Задержка:
            Console.ReadLine();
        }
    }
}
Архив проекта можно взять здесь.

    Результат работы программы совпадает с результатом из предыдущего шага:


Рис.1. Результат работы приложения

    Данная программа практически совпадает с программой из предыдущего шага, за исключением лишь нескольких моментов. Как и ранее, мы описываем два пространства имен First и Second, и в каждом из них есть класс MyClass. Но на этот раз в программе есть инструкция using First. Поэтому в программе мы можем обращаться к классу MyClass из пространства имен First просто по имени MyClass, не указывая явно пространство имен First.


Если в программе, кроме инструкции using First, добавить еще и инструкцию using Second, то возникнет ошибка и программа не скомпилируется. Причина ошибки в том, что в таком случае по имени класса MyClass нельзя однозначно определить, о каком именно классе (из какого пространства имен) идет речь.

    Кроме этого, мы использовали инструкцию

  using myclass = Second.MyClass;    . 
В результате к классу MyClass из пространства имен Second можно обращаться по псевдониму myclass. Результат выполнения этой программы такой же, как и в предыдущем случае.


Для использования статических членов класса без явного обозначения названия класса можно применить статический импорт. Для этого после инструкции using указывается ключевое слово static, а затем - полная ссылка (с указанием пространства имен) на класс. Например, если воспользоваться инструкцией using static System.Math, то к статическим методам и полям класса Math можно обращаться, не указывая имя класса. То есть вместо Math.PI или Math.Cos() можно соответственно использовать инструкции PI и Cos(). Аналогично, воспользовавшись инструкцией using static System.Console, получаем возможность вместо обращения к методу Console.WriteLine() использовать выражение WriteLine().

    На следующем шаге мы рассмотрим работу с датой и временем.




Предыдущий шаг Содержание Следующий шаг