gpt4 book ai didi

c# - 是否可以在 C# 中定义参数化类型别名?

转载 作者:太空宇宙 更新时间:2023-11-03 19:28:27 26 4
gpt4 key购买 nike

C# 文档推荐使用 using 指令将类型引入本地范围。事实上,我可以做类似的事情:

using DD = IDictionary<string,IDictionary<string,Blah>>;

而且效果很好。但是,我希望能够做到:

using DD<Blah> = IDictionary<string,IDictionary<string,Blah>>

但是编译器死于:

using DD<Blah...
^ ; expected

有没有办法表达这种类型的同义词,而不是到处重复长得吓人的通用名称?

上下文

我想知道是否可以在只读集合的​​输出类型上编写一个通用的递归包装器。有如下界面

interface IIndexable<in In, out Out> { Out this[In idx] { get; }}

我设法写了

IIndexable<Key,VOut> map(IIndexable<Key,VIn> coll, Func<VIn, VOut> f)

我想我真的是在尝试模仿 Haskell 的 Functor 类型类的便利性。

因此,将我的复杂类型包装在自定义类中不会削减它,因为它是从一堆 map() 组装而来的,并且没有单个 new 调用以替换为自定义包装类。

最佳答案

很遗憾,没有。您必须为每个 Blah 定义一个别名输入(在您的示例中)。

喜欢:

using DB = IDictionary<string,IDictionary<string,Blah>>;
using DG = IDictionary<string,IDictionary<string,Gah>>;

我知道,有点令人沮丧。

(但是,我鼓励您首先考虑是否真的想要处理类型为 IDictionary<string, IDictionary<string, Blah>> 的变量的代码。当您嵌套时像这样的数据结构,现在是问问自己是否应该将其中一些封装在自定义类中的好时机,它实际上可以轻松地做你想做的事情而不会让自己头疼。当然,这可能是你专门问这个问题因为你正在写这样一个类,在这种情况下,继续。)

关于c# - 是否可以在 C# 中定义参数化类型别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6797596/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com