【问题标题】:Nullable struct vs class可空结构与类
【发布时间】:2010-11-02 10:41:47
【问题描述】:

我有一个包含两个字段的简单结构;一个存储一个对象,另一个存储一个日期时间。我这样做是因为我想将对象存储在 Dictionary 中,但也带有 DateTime 标记。

我有一个方法可以返回我的结构,我现在决定该方法也应该能够返回 null,所以我让我的结构可以为 null。我现在想知道是否应该让我的结构成为一个类,所以它是一个引用类型?

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    在这种情况下,是的,让你的结构成为一个类可能更清楚。

    就理由而言,您实际上是在创建一个专门的Tuple。有趣的是,库设计者选择将.Net 4 Tuple 设为类而不是结构。 (该页面是元组创建者并链接到各种元组实例类)

    【讨论】:

    • “作为一个类的元组”可能主要是为了在到达 Tuple (8 args) 时保持一致 - 这几乎肯定会像结构一样过大- 特别是如果任何 T 是不平凡的。
    • @Marc:这很好。直到刚才我才注意到元组是不可变的。
    【解决方案2】:

    实际上两者都应该没问题(只要struct 是不可变的)。 DateTime 和引用不足以使其过大。

    我假设您将它用作字典中的 value(而不是 key)?如果用作键,则需要覆盖 EqualsGetHashCode(),无论 structclass 是什么。

    【讨论】:

    • 是的,我用它作为值,而不是键,所以我覆盖了这些方法。
    • (可能我措辞不好……这些方法仅在用作键时才重要[在这种情况下])
    • 是的,我明白 - 我不需要。您的意思是,如果您将课程用作键,正如某人在stackoverflow.com/questions/689940/… 的答案之一中所解释的那样
    猜你喜欢
    • 1970-01-01
    • 2011-07-26
    • 2011-07-18
    • 2014-11-10
    • 2012-06-16
    • 2011-05-13
    • 2011-02-14
    相关资源
    最近更新 更多