代码之家  ›  专栏  ›  技术社区  ›  Nick Vaccaro

C:是可以为空的类型(int?)物体?

  •  1
  • Nick Vaccaro  · 技术社区  · 15 年前

    我是从 this post C中的值类型不是对象。也就是说,它们不从System.Object继承。

    假设我的逻辑支持这一点,是否可以为空的类型,比如int?对象。它们是从对象继承的吗?

    如果是这样,他们是否和其他对象一样受到相同的规则和约束,或者是否有特殊的规则控制他们的行为?

    正如引用一样,这个问题来自对空合并运算符工作的查询。

    3 回复  |  直到 12 年前
        1
  •  11
  •   thecoop    12 年前

    不正确-值类型 对象,但它们的行为与引用类型不同-它们是按值传递的,而不是按引用传递的。所以, Nullable<T> (这是什么? T? 是结构,因此继承自System.ValueType和System.Object。C编译器中有一种魔力,它使可空类型的行为方式与引用类型在空和方面的行为方式相同。?,但它们始终具有按值复制语义。

        2
  •  1
  •   Lasse V. Karlsen    15 年前

    您是在询问“继承自System.Object”还是“引用类型”?

    值类型确实继承自System.Object,但它们不是引用类型。

    可以为空的类型也是值类型,因此它们也不是引用类型,但它们确实继承自System.Object。

    请注意,您作为程序员可以声明什么和系统提供什么是有区别的。

    价值类型 继承自System.Object,但不能自己声明值类型从任何对象派生。

    值类型从System.ValueType下降,后者又从System.Object下降。

    所以从技术上讲,所有值类型都是从System.Object下降的。

        3
  •  0
  •   Paul Creasey    15 年前

    一切都是一个对象,值类型只是结构,而不是类。