我真的不明白有什么区别:
private void Send<T>(T packet) where T : IPacket
和
private void Send(IPacket packet)
因为对通用的约束,是不是完全相同?如果没有,这里有什么不同之处,使用带有约束的通用算法有什么好处呢?
谢谢!
答案 0 :(得分:3)
这里有什么不同之处,使用带有约束的通用的优势有什么优势?
使用泛型,可以指定多个约束:
private void Send<T>(T packet) where T : IPacket, IFoo {
}
...
private void Send<T>(T packet) where T : IPacket, new() {
var t1 = new T();
var t2 = default(T);
}
当您使用泛型时,direct calls tend to be faster than those made via interfaces会有一个小的性能获胜。