【发布时间】:2018-09-11 14:18:17
【问题描述】:
我有一个关于泛型接口的基本问题。
案例一:
public interface IDataProcesser
{
TOut Process<Tin,TOut>(Tin input);
}
案例 2:
public interface IDataProcesser<Tin,TOut>
{
TOut Process(Tin input);
}
案例 1 会导致装箱/拆箱吗?与案例 2 相比,它的性能是否更低。在设计通用接口时是否有任何指导方针?
谢谢你, 拉维
【问题讨论】:
-
这在很大程度上取决于
Tin和TOut的真实类型,无论如何,只需使用一些分析器进行测量。 -
了解为什么您认为这里可能涉及拳击会很有趣。这两种方法之间不应该存在任何性能差异,即使存在差异,也会影响系统整体性能的重要差异吗?
-
Useful background material。您的问题距离需要答案还有几个阶段,到时候您将拥有的不仅仅是这些界面。
-
Boxing is the process of converting a value type to the type object.. 创建泛型的目的之一是帮助避免拳击。
-
不会发生装箱/拆箱,因为您正在指定类型。我看不出性能不足。