加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

.NET DBNull vs所有变量类型都没有?

发布时间:2020-12-17 00:33:03 所属栏目:大数据 来源:网络整理
导读:我对.NET中的空值和变量有点困惑. (VB首选) 有没有办法检查任何给定变量的“nullness”,无论它是对象还是值类型?或者我的空检查是否必须始终预测它是在检查值类型(例如System.Integer)还是对象? 我想我正在寻找的是一个检查所有可能类型的无效的函数.也就
我对.NET中的空值和变量有点困惑. (VB首选)

有没有办法检查任何给定变量的“nullness”,无论它是对象还是值类型?或者我的空检查是否必须始终预测它是在检查值类型(例如System.Integer)还是对象?

我想我正在寻找的是一个检查所有可能类型的无效的函数.也就是说,任何类型的变量

a)自从宣布以来从未被赋予价值

b)从数据对象(来自数据库)中分配了一个空值

c)被设置为等于另一个为null的变量值

d)设置为从未设置或过期的ASP.NET会话/应用程序变量.

在.NET中处理空方案时是否有一般的最佳实践?

更新:当我谈到一个值为“null”的值类型时,我真正的意思是一个值类型,它从未设置过,或者在某个点设置为等于或从空对象转换.

正常值类型(布尔值,整数,长整数,浮点数,双精度数,枚举数和结构数)不可为空.

所有值类型的默认值均为0.

除非已设置,否则CLR不允许您访问变量.您可能认为并非总是如此,但有时CLR会介入并为您初始化它们.在方法级别,您必须在使用之前显式初始化所有变量.

此外,正如其他人所指出的,由于.net 2.0,有一种称为Nullable< T>的新泛型类型. C#中有一些编译器缩写,比如int?意味着Nullable< int&gt ;,double?意味着Nullable< double>等等

你只能包装Nullable< T>在非可空值的类型上,这很好,因为引用已经能够为null.

int? x = null;

对于int ?,虽然你可以测试null,但有时候调用x.HasValue()会更好.

在C#中还有nullable coalescing operator ??当您要将可空值分配给不可为空的值类型时.但是如果你没有运算符,可以调用GetValueOrDefault().

int y = x ?? 2; // y becomes 2 if x is null.
int z = x.GetValueOrDefault(2); // same as y

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读