我在MSDN上读到泛型对于创建集合很有用。我对C#很陌生,我想知道是否存在何时将泛型用于集合以外的目的。如果有可能你提供一个例子来说明你的论点。
答案 0 :(得分:5)
以下是.NET库中的一小部分:
IComparer<T>
- 用于比较两个T
s
IEquatable<T>
- 用于确定两个T
s是否相等的接口
Nullable<T>
- 用于为非可空类型提供空值(例如int
)
Tuple<T1, T2>
- 用作包含两个强类型值的快速容器
Action<T>
- 用于保存返回T
答案 1 :(得分:4)
泛型是一项功能,其主要目的是促进代码重用和类型安全,这些概念适用于更广泛的代码段而不仅仅是集合。
很容易看出代码重用和类型安全与集合很容易一起使用:LINQ使用泛型来提供可以对任何类型的可枚举序列(代码重用)进行操作的算法以及各种泛型集合类也使用泛型类型信息来提供类型安全性(例如,尝试将int
添加到List<string>
的程序甚至无法编译。)
尽管如此,还有很多机会利用仿制药。例如,工厂可以使用泛型来确保类型安全:
class Factory
{
// can create any type of Widget, will not allow e.g. Create<string>()
public Widget Create<T>() where T: Widget { ... }
}
答案 2 :(得分:1)
泛型用户的简短列表(来自我自己的Windows应用程序框架):
Repository<T>
模式)GetExport<T>
)IService<T>
接口)DelegateCommand<T>
这个名单一直在继续......
底线:
泛型是C#中最好的,无处不在的功能之一。