Mar*_*ell 20
很多原因:
Nullable<T>直到.NET 2.0才存在,并且它不能破坏现有代码 - 特别是对于不同的装箱规则Nullable<T>int,我可能不希望它可以为空......我希望它是一个int,我不想要检查/处理空值byte[],现在考虑是否可以byte为空 - 大量的额外开销;*加上它会阻止你做blits等*表现:Nullable<T>增加了许多额外的惩罚; 特别是很多隐藏的电话.HasValue和.Value/ .GetValueOrDefault(); 这尤其在"提升的操作符"中显示 - 即x + y变为类似于下面的东西,这会增加紧密循环等:
(x.HasValue && y.HasValue) ? (x.GetValueOrDefault() + y.GetValueOrDefault()) : null
同样,x == y必须检查:
==的GetValueOrDefault()每一个很多开销....
是的,有罚款.该Nullable<T>结构包含值以及确定值的空值的布尔标志.
虽然布尔值只有一个字节,但结构与偶数字边界对齐.一个int使用四个字节的内存,而是一个int?需要八个字节.
| 归档时间: |
|
| 查看次数: |
1000 次 |
| 最近记录: |