一尘不染

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

c#

在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...
    }

}

解决方法也有用吗?


阅读 424

收藏
2020-05-19

共1个答案

一尘不染

如您所知,您无法执行此操作。

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

public class A {

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

}
2020-05-19