首页 > 软件操作教程 > 编程开发 > C#
题目内容

C# 运算符和可空类型

题目答案

    对于简单类型(如int),可以使用+、-等运算符来处理值。而对于对应的可空类型,这是没有区别的:包含在可空类型中的值会隐式转换为需要的类型,使用适当的运算符。这也适用于结构和自己提供的运算符。例如:

    int? opl =5;

    int? result = opl * 2;

注意,其中result变量的类型也是int?。下面的代码不会被编译:

    int? opl = 5;

    int result = opl * 2;

为使上面的代码正常工作,必须进行显式转换:

    int? opl = 5;

    int result = (int) opl * 2;

或通过Value属性访问值:

    int? opl = 5;

    int result = opl.Value * 2;

只要opl有一个值,上面的代码就可以正常运行。如果opl是null,就会生成System.InvalidOperationException 类型的异常。

这就引出了一个很明显的问题:当运算表达式中的一个或两个值是null时,例如,下面代码中的opl,会发生什么情况?

    int? opl = null;

    int? op2 = 5;

    int? result = opl * op2;

答案是:对于除了 bool?外的所有简单可空类型,该操作的结果是null,可以把它解释为“不能计算”。对于结构,可以定义自己的运算符来处理这种情况。对于bool?,为&和丨定义的运算符会得到非空返回值,这些运算符的结果十分符合逻辑,如果不需要知道其中一个操作数的值即可计算出结果,则该操作数是否为null就不重要。

网友评论(共0条评论)

请自觉遵守互联网相关政策法规,评论内容只代表网友观点!

最新评论

点击加载更多评论>>

软件操作 新人注册送三重礼

已有 22658 名学员学习以下课程通过考试

相关视频试题

最需教育客户端 软件问题一手掌握

去 App Store 免费下载 iOS 客户端