zoukankan      html  css  js  c++  java
  • 关于C#中的“?”

    shanzm-2019年8月23日 19:59:46

    1. 可空类型修饰符(T?)

    强类型语言中引用类型可以为空,如:string str=null;
    而你若是定义一个值类型为空,则是会报错的。

    然而,在处理数据库和其他包含可能未赋值的元素的数据类型时,我们希望可以将 null 赋值给数值类型或布尔型的功能特别有用。例如,数据库中的布尔型字段可以存储值 true 或 false,或者,该字段也可以未定义

    所以C# 提供了一个特殊的数据类型,Nullable 类型(可空类型),可空类型可以表示其基础值类型正常范围内的值,和 null 值。

    例如,Nullable< Int32 >,读作"可空的 Int32",可以被赋值为 -2^31 到2^31-1 之间的任意值,也可以被赋值为 null 值。

    类似的,Nullable< bool > 变量可以被赋值为 true 或 false 或 null。

    实际上,Nullable类型是一个结构体,它有两个公开可读字段:HasValue和Value。 HasValue是一个布尔值,当有值存储时它为真,当变量值为null时HasValue为假。当HavValue为真是时,可以取得变量的值;为假时,当尝试取得变量的值时会抛出一个异常(System.InvalidOperationException)。

    声明一个 nullable 类型(可空类型)的语法如下:
    用可空类型修饰符"?"来表示,
    表现形式为"T?"

    例如:int? 表示可空的整形,DateTime? 表示可为空的时间。
    T? 其实是System.Nullable(泛型结构)的缩写形式,也就意味着当你用到T?时编译器编译 时会把T?编译成System.Nullable的形式。

    例如:int?,编译后便是System.Nullable的形式。



    2. 三元(运算符)表达式(?: )

    例如:x?y:z 表示如果表达式x为true,则返回y;如果x为false,则返回z,是省略if{}else{}的简单形式。



    3. 空合并运算符(??)

    为了减少可空类型的代码量,遇到null的时候,C#提供了??操作符来获取如果为空的默认值

    如果此运算符的左操作数不为null,则此运算符将返回左操作数,否则返回右操作数。

    例如:a??b 当a为null时则返回b,a不为null时则返回a本身。

    空合并运算符为右结合运算符,即操作时从右向左进行组合的。如,“a??b??c”的形式按“a??(b??c)”计算。



    4. NULL检查运算符(?.)

    ?.用于判断某个对象是否为空,如果对象为NULL,则不进行后面的获取成员的运算,直接返回NULL

  • 相关阅读:
    javaweb消息中间件——rabbitmq入门
    virtual box 桥接模式(bridge adapter)下无法获取ip(determine ip failed)的解决方法
    Apache Kylin本地启动
    git操作
    Java学习总结
    Java中同步的几种实现方式
    hibernate exception nested transactions not supported 解决方法
    vue 中解决移动端使用 js sdk 在ios 上一直报invalid signature 的问题解决
    cookie 的使用
    vue 专门为了解决修改微信标题而生的项目
  • 原文地址:https://www.cnblogs.com/shanzhiming/p/11402803.html
Copyright © 2011-2022 走看看