Подтвердить что ты не робот

Объявление синонима типа в С#

Надеюсь, я пропустил это в документах. Есть ли способ объявить синоним типа в С#?

4b9b3361

Ответ 1

Вы можете использовать оператор using для создания псевдонима для типа.

Например, следующее будет создавать псевдоним для System.Int32, называемый MyInt

using MyInt = System.Int32;

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

Создайте тип People, который является List<Person>

public class People: List<Person>
{
}

Не совсем псевдоним, но он упрощает работу, особенно для более сложных типов, таких как

public class SomeStructure : List<Dictionary<string, List<Person>>>
{
}

И теперь вы можете использовать тип SomeStructure, а не это универсальное объявление.

В примере, который у вас есть в ваших комментариях, для Tuple вы можете сделать что-то вроде следующего.

public class MyTuple : Tuple<int, string>
{
  public MyTuple(int i, string s) :
    base(i, s)
  {
  }
}

Ответ 2

Возможно, вы ищете Использование Alias ​​Directives:

using MyType = MyNamespace.SomeType;

Это позволяет в вашем коде ввести:

// Constructs a MyNamespace.SomeType instance...
MyType instance = new MyType();

Ответ 3

Есть ли способ объявить синоним типа в С#?

Нет.

Вы можете создать псевдоним с использованием, но ограниченным 1 файлом (пространство имен).

Ответ 4

Похоже, вы говорите об псевдониме, который вы можете объявить в своих операторах using в верхней части ваших кодовых файлов:

using MyDate = System.DateTime;

Ответ 5

Это не самый простой способ решить эту проблему, но когда мне нужен синоним типа, я создаю класс с неявными преобразованиями в целевой тип и из него, например:

Данное имя должно быть синонимом строки, Затем вы можете сделать следующее:

public class Name
{
    public string Value;
    public static implicit operator string(Name name) { return name.Value; }
    public static implicit operator Name(string name) { return new Name {Value = name}; }
}

Что даст вам возможность использовать тип имени вокруг вашего кода, и компилятор позволит вам назначать ему значения также из строки.

Если у вас есть следующая подпись метода:

public void SomeMethodThatNeedsName(Name name)

Вы можете сделать это:

SomeMethodThatNeedsName("aNameThatComesFromString")