【发布时间】:2008-12-03 18:27:21
【问题描述】:
至少对我来说,Pair 类是一个用途非常广泛的类。那么微软为什么要把它放到 System.Web.UI 命名空间中呢?
我的小脑袋无法理解有什么原因吗?
谢谢。
【问题讨论】:
至少对我来说,Pair 类是一个用途非常广泛的类。那么微软为什么要把它放到 System.Web.UI 命名空间中呢?
我的小脑袋无法理解有什么原因吗?
谢谢。
【问题讨论】:
它用于序列化视图状态(连同它的表亲 Triplet)。
我猜想它们不是基础库的一部分的原因(即使它们没有任何特定于 ASP.NET 的内容)是因为它们没有类型,所以不是很有用。
在基本库中包含无类型对和三元组,可能被视为鼓励“无类型”编程。
不过,类型化元组可能很有用(我认为 F# 有它们)。我认为匿名类型涵盖了异构元组的大部分用例。
【讨论】:
我不认为你会找到一个很好的理由。似乎它最初是由网络团队创建的,所以他们在他们的命名空间/程序集中创建了它。他们还为AspNetHostingPermission 添加了LinkDemand,这很不幸。
就其“预期用途”而言,MSDN 表示
[Pair 类] 是一个实用程序类,在整个 ASP.NET 中以各种方式使用,例如在页面状态管理任务期间或在配置节处理程序中。
...
Pair 类可以在页面状态持久性实现中以多种方式使用。最常见的用途是作为ViewState 和ControlState 集合的容器。在这种情况下,First 属性用于ViewState,Second 用于ControlState。
【讨论】:
这并不能直接回答问题,但在 .NET 4 中,您可以并且可能应该使用 Tuple。
为了回答这个问题,我认为将 Pair 放在 System.Web.UI 中只是一个错误,微软试图通过引入 Tuple 类来解决这个错误。
【讨论】:
上帝保佑我们应该有一个比字典更轻的类型 Pair 并且可以嵌入到类型列表中以便它是可索引的:)。当然,创建其中之一是无痛的,但是为什么。
【讨论】: