为什么除了 : new() 之外,我不能为类型参数指定构造函数限制
本文关键字:类型参数 不能 构造函数 new 之外 为什么 | 更新日期: 2023-09-27 18:32:45
我正在尝试创建一个接口' Something<T>
并希望限制T
拥有一个带有一个 int 参数的构造函数。我可以做一些像where : new()
.那为什么我不能让它where T : new(int)
呢?
您可以通过将
T 的实例化延迟给用户来避免这一点。像这样:
class MyTCreator<TParam, T>
{
private Func<TParam, T> generator;
public MyTCreator(Func<TParam, T> generator)
{
this.generator=generator;
}
public T CreateT(TParam param)
{
return generator(param);
}
}
并像这样使用你的类:
var creator = new MyTCreator<long, DateTime>(ticks => new DateTime(ticks));
DateTime dt = creator.CreateT(12345L);