我在 MSDN 上读到泛型对于创建集合很有用。我对 C# 还很陌生,我想知道是否存在将泛型用于集合以外的目的的情况。如果有的话,你能提供一个例子来说明你的论点。
问问题
257 次
3 回答
5
以下是 .NET 库中的一些:
IComparer<T>
- 用于比较两个T
s 的接口
IEquatable<T>
- 用于判断两个T
s 是否相等的接口
Nullable<T>
- 用于为不可为空的类型提供空值(例如int
)
Tuple<T1, T2>
- 用作保存两个强类型值的快速容器
Action<T>
- 用于持有返回 a 的委托T
于 2013-08-12T22:21:41.477 回答
4
泛型是一个功能,其主要目的是促进代码重用和类型安全,这些概念适用于比集合更广泛的代码段。
很容易看出代码重用和类型安全很容易与集合齐头并进:LINQ 使用泛型来提供可以对任何类型的可枚举序列(代码重用)进行操作的算法,并且各种泛型集合类也使用泛型类型提供类型安全的信息(例如,试图将 a 添加int
到 a的程序List<string>
甚至无法编译)。
也就是说,有更多机会利用泛型。例如,工厂可以使用泛型来保证类型安全:
class Factory
{
// can create any type of Widget, will not allow e.g. Create<string>()
public Widget Create<T>() where T: Widget { ... }
}
于 2013-08-12T22:26:34.630 回答
1
泛型用途的简短列表(来自我自己的 Windows 应用程序框架):
- 数据访问(使用实体框架和
Repository<T>
模式) - 解耦架构(使用 MEF 的
GetExport<T>
) - 缓存(使用 MemoryCache)——即使是这个也主要与集合有关。
- 通用基本 CRUD 合约(通过
IService<T>
提供基本 CRUD 方法的接口) - 图(实体树)迭代和操作。
- 强类型 INotifyPropertyChanged
- 通用层,从数据库到 ViewModel。
DelegateCommand<T>
- 事件聚合器/信使
- 列表的基于表达式的搜索条件
- 数据模板管理器
而且这个名单会一直持续下去......
底线:
泛型是 C# 的最佳和更普遍的特性之一。
于 2013-08-12T22:26:41.840 回答