C#:可空类型(int?)是对象吗?

标签 c# object nullable

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

假设我的逻辑到此为止,是可空类型(例如 int?)对象。它们是否继承自 Object?

如果是这样,它们是否与其他对象一样遵守所有相同的规则和约束,或者是否有特殊的规则来管理它们的行为?

作为引用,这个问题来自对 null coalesce 运算符工作原理的调查。

最佳答案

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

关于C#:可空类型(int?)是对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1850180/

相关文章:

Android parcelable - 写入可空长

c# - 在派生自(相同)接口(interface)的两种类型之间进行转换

c# - 使用 OxyPlot 散点图自定义颜色范围

javascript - 序列化一个javascript类对象?

c++ - 均衡对象时复制数组

c# - 为什么会有 Nullable<T> 结构和 Nullable 类?

kotlin - 使用 hashmap 键的 Smart Cast

c# - 另一个锁定问题

c# - 用于通用访问的 IDataReader

c# - 要反序列化的对象具有 C# 关键字