Псевдонимы типов и статический импорт

Последнее обновление: 06.01.2022

Псевдонимы

Для различных классов и структур мы можем использовать псевдонимы. Затем в программе вместо названия типа используется его псевдоним. Например, для вывода строки на экран применяется метод Console.WriteLine(). Но теперь зададим для класса Console псевдоним:

using printer = System.Console;

printer.WriteLine("Laudate omnes gentes laudate");
printer.WriteLine("Magnificat in secula");

С помощью выражения using printer = System.Console указываем, что псевдонимом для класса System.Console будет имя printer. Это выражение не имеет ничего общего с подключением пространств имен в начале файла, хотя и использует оператор using. При этом используется полное имя класса с учетом пространства имен, в котором класс определен. И далее, чтобы вывести строку, применяется выражение printer.WriteLine("Laudate omnes gentes laudate").

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

И еще пример. Определим класс и для него псевдоним:

using printer = System.Console;
using User = Person;

User tom = new User("Tom");
printer.WriteLine(tom.Name);    // Tom

class Person
{
    public string Name { get; set; }
    public Person(string name) => Name = name;
}

Класс называется Person, но в программе для него используется псевдоним User.

Статический импорт

Также в C# имеется возможность импорта статической функциональности классов. Например, импортируем возможности класса Console:

using static System.Console;

WriteLine("Hello from C# 8.0");

Выражение using static подключает в программу все статические методы и свойства, а также константы. И после этого мы можем не указывать название класса при вызове метода.

Подобным образом можно определять свои классы и импортировать их:

using static System.Console;
using static Operation;

WriteLine(Sum(5, 4));       // 9
WriteLine(Subtract(5, 4));  // 1
WriteLine(Multiply(5, 4)); // 20

static class Operation
{
    public static int Sum(int a, int b) => a + b;
    public static int Subtract(int a, int b) => a - b;
    public static int Multiply(int a, int b) => a * b;
}
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850