gpt4 book ai didi

c# - 可空变量在内存分配中的优势 C#

转载 作者:太空宇宙 更新时间:2023-11-03 23:36:20 24 4
gpt4 key购买 nike

我读过一些解释nullable<T>的文章类型变量,至今没找到任何文章解释nullable<T>的作用类型变量与不可空类型变量的比较。

nullable<T>吗类型变量会消耗更少的内存分配?或者两者相同

附加组件

所以我们没有必要使用nullable<T>对于不可能为空的每个变量?

最佳答案

假设您正在谈论 Nullable<T>类型,那么它将始终比等效的不可空类型使用更多的内存。

两者都是值类型,因此可以存储,例如当用作参数或局部变量,或用作连续内存块中的单个元素(即用作数组)时,在堆栈上,这可以在某些情况下改善内存使用特性。换句话说,用 Nullable<T>您将获得一些引用类型语义,而没有一些与存储相关的缺点。

但是 Nullable<T> 的实例必然包含标称值(即使实例的有效值为 null ,非可空类型的存储仍然存在),以及指示实例是否应被视为 null 的标志。值(value)。很明显,“值加一个标志”将比仅仅“值”占用更多的内存。

请注意 the implementation of Nullable<T> ,至少从存储的角度来看,看起来像这样:

public struct Nullable<T> where T : struct
{
private bool hasValue;
internal T value;
}

你可以清楚地看到这里的值和标志。 T 类型的任何变量的不可空等效项当然只有值(value)。额外的 bool表示额外的内存需求。

因此,对于任何值类型 T , Nullable<T> 的实例将占用比 T 实例更多的内存.

关于c# - 可空变量在内存分配中的优势 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30448115/

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