C#typedef泛型

Aar*_*man 7 c# generics typedef

我正在使用类的速记版本,如下所示:

using NodeSteps = Tuple<Node, int>;
Run Code Online (Sandbox Code Playgroud)

Node是我自己定义的类.这通常很好,但问题是,Node是一个需要结构的泛型.

我的问题如下:

1.如何在C#中调用这些typedef.我知道它们并不完全是typedef,但它是我能想到的最相似的东西.

2.我如何制作通用版本?

using NodeSteps<T> = Tuple<Node<T>, int>;
Run Code Online (Sandbox Code Playgroud)

我注意到这不是这样做的方法.我也想指定T是一个结构.

PMF*_*PMF 8

使用

class NodeSteps<T> : Tuple<Node<T>, int>
{
}
Run Code Online (Sandbox Code Playgroud)

这是我所知道的typedef最接近的等价物.如果有任何非默认构造函数,则需要声明它们.


Mat*_*ten 7

  1. 它们被称为别名.

  2. 不,这是不可能的.C#语言规范:

使用别名可以命名一个封闭的构造类型,但不能在不提供类型参数的情况下命名未绑定的泛型类型声明.

因此,using x<T> = List<T>或类似的东西是不可能的.

您可以使用课程(请参阅其他答案).


Kam*_*ski 5

这将在C#语言规范的第9.4.1节中介绍.

使用别名可以命名一个封闭的构造类型,但不能在不提供类型参数的情况下命名未绑定的泛型类型声明.

这称为别名,不能是通用的,但使用的右手可以是通用的

using ListOfInts = List<int>
Run Code Online (Sandbox Code Playgroud)

已验证