在C#中,您可以对通用方法设置约束,例如:
public class A {
public static void Method<T> (T a) where T : new() {
//...do something...
}
}
Run Code Online (Sandbox Code Playgroud)
您指定的T
应该具有不需要参数的构造函数.我想知道是否有办法添加一个约束,如" 存在一个带float[,]
参数的构造函数? "
以下代码无法编译:
public class A {
public static void Method<T> (T a) where T : new(float[,] u) {
//...do something...
}
}
Run Code Online (Sandbox Code Playgroud)
解决方法也有用吗?
我有一个采用T类型的通用方法,我需要能够在需要单个XmlNode的情况下调用构造函数。当前,我正在尝试通过具有一个抽象基类来实现此目的,该基类具有我想要的构造函数(加上一个无参数的构造函数,因此除了添加实际的子类之外,我无需编辑“子类”)并以此进行约束。如果我尝试实例化这些类之一,它会抱怨:
Cannot create an instance of the variable type 'T' because it does not have the new() constraint
Run Code Online (Sandbox Code Playgroud)
如果我添加new()
约束,我得到:
'T': cannot provide arguments when creating an instance of a variable type
Run Code Online (Sandbox Code Playgroud)
我该怎么办?