我正在编写一个带有类型参数T
的类,该类接受将T
实例转换为字符串的委托。我可以将这种委托的类型声明为Func<T,string>
或Converter<T,string>
。有没有理由更喜欢其中之一?
Func
,选择 Converter
将导致您产生开销(反之亦然)。 Func
和 Action
而不是其他命名委托,因此我会使用它们。 转换器
的文档将其描述为被两个 ConvertAll
方法使用。
备注
这个委托被
ConvertAll<TInput, TOutput>
方法的Array
类和ConvertAll<TOutput>
方法的List<T>
类使用,将集合中每个元素从一种类型转换为另一种类型。
我只会将它用于那个目的。对于其他任何目的,我会使用Func
。
Func<T,TResult>
在协变/逆变方面有什么不正确的地方? - Damien_The_UnbelieverFunc
的文档! - CompuChip.ToString()
机制,该类包括一个默认委托,如果没有给定Converter
委托,则简单地调用T
对象上的ToString()
方法。如果T
的ToString()
方法不能产生所需的结果,则委托似乎是类的消费者指定自定义格式的好方法。 - Dan Stevens