我发现很多这样的代码:
public interface IFoo
{
void DoSomething();
}
public void RegisterFoos<T>(T foo) where T : IFoo
{
foo.DoSomething();
}
我没有这种代码,为什么不通过IFoo?
我至少可以看到两个原因。
原因之一是允许发送特定类型的引用。作为接口,您可以发送相同的对象,但是您只能用于foo.GetType()
获取类型,但这是对象的实际类型。通过使用泛型类型,可以将对象转换为其他类型,然后typeof(T)
获取该类型。
另一个原因是能够返回与参数相同类型的引用。例:
public T DoSomething<T>(T foo) where T : IFoo {
foo.DoSomething();
return foo;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句