gpt4 book ai didi

c# - (重新)使用约束类型的泛型参数而不声明它们

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

这可能是不可能的,但我想检查是否可以用一种简单的方式表达这样的事情:

// obviously doesn't work
class Foo<T> : IFoo<T1,T2>
where T: Bar<T1,T2>
{
// ...
Baz<T1,T2> getBaz(){...}
}

现在我宣布Foo<T1,T2> , 但我在语义上不喜欢它,获得约束的唯一方法是也列出 BarFoo的通用参数列表,我希望减少冗余,而不是添加冗余。

编辑:Baz<T1,T2>应该是返回类型,不是方法名

最佳答案

问题是它没有定义 T1 和 T2 是什么。

你可以这样做:

class Foo<T> : IFoo<int,string>
where T: Bar<int,string>
{
// ...
void Baz(){...}
// can call e.g. Qux<int, string>();
}

你可以这样做:

class Foo<T, T1, T2> : IFoo<T1,T2>
where T: Bar<T1,T2>
{
// ...
void Baz(){...}
// can call e.g. Qux<T1, T2>();
}

但事实上,没有办法知道 T1 和 T2 是什么(人类甚至无法猜测您要做什么,因此编译器无法推断出它)。

关于c# - (重新)使用约束类型的泛型参数而不声明它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3838682/

27 4 0
文章推荐: c# - 如何更新 app.config 文件中的值?
文章推荐: arrays - MATLAB:检测并删除 2 列矩阵中的镜像对
文章推荐: html - 如何设置