c# - 泛型与接口(interface)的实际优势

标签 c# generics polymorphism

在这种情况下使用泛型与接口(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/

相关文章:

typescript - 在 TypeScript 中扩展参数化接口(interface)的通用接口(interface)

c# - 通用类型代码中的类型参数是否有命名约定(bracy flavoured)

java - 继承与多态的区别

c# - 如何处理 String.Format 方法?

c# - 我们如何在 ItemProviderDelegate 中等待 Action/Effect 的结果?

Typescript 嵌套泛型

c++与派生类成员级联

c# - 序列化 Lucene.net 文档

c# - Xamarin : Testing Android application using Moq/NUnit and the MockContext?

C++ 方法继承帮助