Mat*_*ino 6 .net vb.net variables null dbnull
我对.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>
,双倍?意味着Nullable<double>
等等
您只能包装Nullable<T>
不可为 null 的值类型,这很好,因为引用已经可以为 null。
int? x = null;
Run Code Online (Sandbox Code Playgroud)
对于 int?,虽然您可以测试 null,但有时调用 更好x.HasValue()
。
在 C# 中还有可为null 的合并运算符?? 当您想要将可空值分配给不可空值类型时。但如果您没有该运算符,则可以调用 GetValueOrDefault()。
int y = x ?? 2; // y becomes 2 if x is null.
int z = x.GetValueOrDefault(2); // same as y
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14889 次 |
最近记录: |