gpt4 book ai didi

c# - 是否支持非泛型类中的泛型构造函数?

转载 作者:IT王子 更新时间:2023-10-29 03:54:32 26 4
gpt4 key购买 nike

是不是不支持,是不是支持但是我要搞点技巧?

例子:

class Foo
{
public Foo<T1,T2>(Func<T1,T2> f1,Func<T2,T1> f2)
{
...
}
}

泛型仅在构造函数中使用,没有依赖于它们的字段/属性,我使用它(泛型)来强制执行 f1 和 f2 的类型关联。

备注:我找到了解决方法——静态方法 Create,但无论如何我很好奇为什么我在直接方法上遇到问题。

最佳答案

不,泛型或非泛型类都不支持泛型构造函数。同样,不支持通用事件、属性和终结器。

只是偶尔我同意它会很方便——但语法看起来很糟糕。例如,假设您有:

public class Foo<T> {}

public class Foo
{
public Foo<T>() {}
}

会怎样

new Foo<string>()

做吗?调用非泛型类的泛型构造函数,还是调用泛型类的普通构造函数?你必须以某种方式区分它们,这会很困惑:(

同样,考虑泛型类中的泛型构造函数:

public class Foo<TClass>
{
public Foo<TConstructor>() {}
}

如何调用构造函数?希望我们都能同意:

new Foo<string><int>()

非常可怕......

所以是的,从语义上讲它偶尔会有用 - 但不幸的是,由此产生的丑陋抵消了这一点。

关于c# - 是否支持非泛型类中的泛型构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3606941/

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