繁体   English   中英

内存分配中可空变量的优点C#

[英]the advantage of nullable variable in memory allocation C#

我读过一些关于nullable<T>类型变量的文章解释,到目前为止我还没有发现任何文章解释了nullable<T>类型变量与非可空类型变量的比较。

可以为nullable<T>类型变量会消耗较少的内存分配吗? 或者两者都是一样的

添加在

所以当没有可能为null时,我们没有必要为每个变量使用nullable<T>

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

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

但是Nullable<T>的实例必然包含标称值(即使实例的有效值为null ,非可空类型的存储仍然存在),以及指示实例是否应该是的标志作为null值处理。 显然,“价值加上一面旗帜”将占用更多的记忆而不仅仅是“价值”。

请注意, Nullable<T>的实现(至少从存储角度来看)如下所示:

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

你可以在这里清楚地看到价值和旗帜。 类型T任何变量的非可空等价当然只有值。 额外的bool表示额外的内存要求。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM