我确实在网上搜索了一些关于在创建泛型类时使用 where 子句的示例。其中大多数展示了较少的实际使用情况。
有人能指出一些体面的例子吗?
实际用法可能是您想要使用从接口(例如)派生的特定类型,而无需自己创建实例。
例子:
class FooReader<T> where T : IFoo, new()
{
public int Read()
{
var foo = new T();
return foo.Read();
}
}
class Foo : IFoo
{
public int Read()
{
return 42;
}
}
interface IFoo
{
int Read();
}
用法:
var reader = new FooReader<Foo>();
var result = reader.Read();