在 C# 中,我有没有办法创建一个速记表达式来定义泛型(或其他类型)

本文关键字:一个 表达式 定义 类型 其他 泛型 有没有 创建 | 更新日期: 2023-09-27 18:22:14

语法T?Nullable<T>的简写。 有没有办法我可以做类似的事情,但使用我自己的自定义角色/等?

就像为MyGeneric<T>制作T!速记一样.

在 C# 中,我有没有办法创建一个速记表达式来定义泛型(或其他类型)

某种意义上说,你可以。您无法使用 !,因为它不是标识符的有效字符,但您可以使用任何其他有效字符。话虽如此,这是非常有限的。如果您知道要使用的基类型,则可以执行以下操作:

using @c = System.Collections.Generic.List<B>;

其中B是基类。如果你想要一个更通用的版本,你可以这样做:

using @c = System.Collections.Generic.List<object>;

您现在可以像使用List<B>或"列表"一样使用@c。如:

@c a = new @c;
a.Add(new B());

就像我说的,它是有限的,不实用的,但它是半可能的。

除非您使用 Roslyn,否则无法执行此操作。我相信最接近你想要的东西(如果我错了,请纠正我(是这样的:

using YourAlias = System.Collections.Generic.Dictionary<string, string>; // or whatever type you want

并使用它:

var dict = new YourAlias();