对于接口约束C#编译器会生成特定的IL指令,这些指令将导致直接在值类型上调用接口方法,不对其进行装箱。如果不使用接口约束,就没有其他方法让C#编译器生成这些IL指令,导致在值类型上调用接口方法始终需要进行装箱操作。
接口约束例子:
//参数T被约束为只支持实现了IComparable和IConvertible接口的类型。
private void RestrictRule<T>(T t) where T:IComparable,IConvertible { .......//相关代码 }