参数和带有约束的T泛型有什么区别? C#

时间:2016-05-24 18:19:30

标签: c# generics parameters

我真的不明白有什么区别:

private void Send<T>(T packet) where T : IPacket

private void Send(IPacket packet)

因为对通用的约束,是不是完全相同?如果没有,这里有什么不同之处,使用带有约束的通用算法有什么好处呢?

谢谢!

1 个答案:

答案 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会有一个小的性能获胜。