【发布时间】:2010-11-02 10:41:47
【问题描述】:
我有一个包含两个字段的简单结构;一个存储一个对象,另一个存储一个日期时间。我这样做是因为我想将对象存储在 Dictionary 中,但也带有 DateTime 标记。
我有一个方法可以返回我的结构,我现在决定该方法也应该能够返回 null,所以我让我的结构可以为 null。我现在想知道是否应该让我的结构成为一个类,所以它是一个引用类型?
【问题讨论】:
我有一个包含两个字段的简单结构;一个存储一个对象,另一个存储一个日期时间。我这样做是因为我想将对象存储在 Dictionary 中,但也带有 DateTime 标记。
我有一个方法可以返回我的结构,我现在决定该方法也应该能够返回 null,所以我让我的结构可以为 null。我现在想知道是否应该让我的结构成为一个类,所以它是一个引用类型?
【问题讨论】:
在这种情况下,是的,让你的结构成为一个类可能更清楚。
就理由而言,您实际上是在创建一个专门的Tuple。有趣的是,库设计者选择将.Net 4 Tuple 设为类而不是结构。 (该页面是元组创建者并链接到各种元组实例类)
【讨论】:
实际上两者都应该没问题(只要struct 是不可变的)。 DateTime 和引用不足以使其过大。
我假设您将它用作字典中的 value(而不是 key)?如果用作键,则需要覆盖 Equals 和 GetHashCode(),无论 struct 与 class 是什么。
【讨论】: