这个问题在这里已有答案:

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

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

private void Send(IPacket packet)

因为对通用的约束,是不是完全相同? 如果没有,这里有什么不同之处,使用具有约束的通用的优点是什么?

谢谢!

===============>>#1 票数: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);
}

当您使用泛型时,也会有一个小的性能获胜,因为直接调用往往比通过接口进行的调用更快

  ask by J. Doe translate from so

未解决问题?本站智能推荐: