位置:首页 > 软件操作教程 > 编程开发 > C# > 问题详情

C# 可空类型

提问人:刘团圆发布时间:2020-12-07

    值类型(大多数基本类型,例如,int、double和所有结构)区别于引用类型(string和任意类)的一种方式:值类型必须包含一个值,它们可以在声明之后、赋值之前,在未赋值的状态下存在,但不能使用未赋值的变量。而引用类型可以是mill。

    有时让值类型为空是很有用的(尤其是处理数据库时),泛型使用System.Nullable<T>类型提供了使值类型为空的一种方式。例如:

    System.Nullable<int> nullablelnt;

这行代码声明了一个变量nullablelnt,它可以拥有int变量能包含的任意值,还可以拥有值null。所以可以编写如下的代码:

    nullablelnt = null;

如果nullablelnt是一个int类型的变量,上面的代码是不能编译的。

前面的赋值等价于:

    nullablelnt = new System.Nullable<int>();

与其他任意变量一样,无论是初始化为null(使用上面的语法),还是通过给它赋值来初始化,都不能在初始化之前使用它。

可以像测试引用类型一样测试可空类型,看看它们是否为null:

if (nullablelnt == null)

{

    ...

}

另外,可使用HasValue属性:

if (nullablelnt.HasValue)

{

    ...

}

    这不适用于引用类型,即使引用类型有一个HasValue属性,也不能使用这种方法,因为引用类型的变量值为null就表示不存在对象,当然就不能通过对象来访问这个属性,否则会抛出一个异常。

    可使用Value属性来查看可空类型的值。如果HasValue是true,就说明Value属性有一个非空值。但如果 HasValue是felse,就说明变量被赋予了null,访问Value属性会抛出System. InvalidOperationException类型的异常。

可空类型非常有用,以至于它们修改了C#语法。声明可空类型的变量不使用上述语法,而是使用下面的语法:

    int? nullablelnt;

其中int ?是System.Nullable<int>的缩写,但更便于读取。

继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部