在 C# 中,您可以对通用方法施加约束,例如:
public class A { public static void Method<T> (T a) where T : new() { //...do something... } }
您指定的地方T应该有一个不需要参数的构造函数。我想知道是否有办法添加一个约束,比如“ 存在一个带float[,]参数的构造函数? ”
T
float[,]
以下代码无法编译:
public class A { public static void Method<T> (T a) where T : new(float[,] u) { //...do something... } }
解决方法也有用吗?
正如你所发现的,你不能这样做。
作为一种解决方法,我通常提供一个可以创建类型对象的委托T:
public class A { public static void Method<T> (T a, Func<float[,], T> creator) { //...do something... } }