在C ++模板中,可以指定某个类型参数为默认值。即,除非明确指定,否则它将使用类型T。
可以在C#中完成或近似吗?
我正在寻找类似的东西:
public class MyTemplate<T1, T2=string> {}
因此,该类型的实例未明确指定T2:
T2
MyTemplate<int> t = new MyTemplate<int>();
本质上将是:
MyTemplate<int, string> t = new MyTemplate<int, string>();
最终,我正在研究一种情况,其中有一个模板被广泛使用,但是我正在考虑使用附加的类型参数进行扩展。我想我可以继承,但是我很好奇是否还有其他选择。
子类化是最好的选择。
我可以将您的主要通用类子类化:
class BaseGeneric<T,U>
有特定的班级
class MyGeneric<T> : BaseGeneric<T, string>
这样可以很容易地将逻辑保持在一个位置(基类),而且还可以轻松提供这两种用法选项。根据班级的不同,可能很少需要额外的工作来实现这一目标。