在这种情况下使用泛型与接口(interface)的实际优势是什么:
void MyMethod(IFoo f)
{
}
void MyMethod<T>(T f) : where T : IFoo
{
}
即你可以在 MyMethod<T>
中做什么你不能在非通用版本中?我正在寻找一个实际的例子,我知道理论差异是什么。
我知道在MyMethod<T>
, T 将是具体类型,但我只能在方法体内将其用作 IFoo 。那么真正的优势是什么?
最佳答案
- 通过接口(interface)调用方法比直接在具体类型上调用慢
- 如果实现
IFoo
的类型是值类型,非泛型版本将装箱参数值,装箱会对性能产生负面影响(尤其是如果您经常调用此方法) - 如果你的方法返回一个值,通用版本可以返回一个
T
而不是一个IFoo
,如果你需要在结果
关于c# - 泛型与接口(interface)的实际优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42539860/