小编典典

C# 中是否有带有参数约束的通用构造函数?

all

在 C# 中,您可以对通用方法施加约束,例如:

public class A {

    public static void Method<T> (T a) where T : new() {
        //...do something...
    }

}

您指定的地方T应该有一个不需要参数的构造函数。我想知道是否有办法添加一个约束,比如“ 存在一个带float[,]参数的构造函数?

以下代码无法编译:

public class A {

    public static void Method<T> (T a) where T : new(float[,] u) {
        //...do something...
    }

}

解决方法也有用吗?


阅读 74

收藏
2022-07-17

共1个答案

小编典典

正如你所发现的,你不能这样做。

作为一种解决方法,我通常提供一个可以创建类型对象的委托T

public class A {

    public static void Method<T> (T a, Func<float[,], T> creator) {
        //...do something...
    }

}
2022-07-17