我从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/