gpt4 book ai didi

c# - C# 中可空类型 "not having a value"和 "being Null"之间的区别

转载 作者:行者123 更新时间:2023-12-01 22:16:11 24 4
gpt4 key购买 nike

术语有什么区别

  1. Not having a value

2.Being Null

C# 中的可空类型。

换句话说,什么时候我们说类型没有值,什么时候我们说该值为空。

最佳答案

Nullable<T>是一个结构体,并且作为一个结构体,它实际上不可能为空。唯一实际数据存储在Nullable<T>中是 T 类型的基础值和一个 bool 值 HasValue旗帜。一个Nullable<T>其中值 HasValue可以被认为是 null ,即使从技术上讲它不为空。

有一些编译器魔法,例如 someNullable == null可以调用,该表达式的结果实际上与 someNullable.HasValue 相同。您还可以分配 nullNullable<T> 。这实际上会创建一个新的 Nullalbe<T>结构在哪里 HasValuefalse 。 (有趣的是,如果您要编写自己的类型,则您自己不可能这样做。)

还有一些更多的编译器魔法,例如,如果您将 Nullalbe<T> 装箱,它实际上并没有对可为 null 的类型进行装箱。如果HasValue实际上是真的,那么它将提取出潜在的值(value)并将其装箱。如果HasValue为 false 那么它只会框 null 。将某物拆箱至 Nullable 时然后它会做相反的事情;创建 Nullable<T> struct 基于它是否为 null。 (这是自定义类型无法做到的另一件事。)

由于这些特殊的编译器功能,它可以很好地使其看起来就像 Nullable实际上可以是null ,但事实是它实际上并非如此null .

关于c# - C# 中可空类型 "not having a value"和 "being Null"之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20907881/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com