zoukankan      html  css  js  c++  java
  • C#中 ? 和?? 的用法

    C#中 ?? 和? 的意思
    1.?
    如果直接定义一个 值类型,给负值null;就会提示“无法将 
    Null转换成‘值类型(比如:int)’,因为他是一种不可为null的值 
    de类型”
    例如
    int in=null;//错误
    int? in=null;//正确
    
    string result=null;//正确 因为string是引用类型不是值类
    型
    string? result=null;//错误,因为?,只能用于值类型
    
    2.??
    var name??:“Hello World!”;//如果name为null,就选择后面那个值,有点类似 var name=name?"Hello World!" :name;
    

      

    补充:

    可空类型可以表示基础类型的所有值,另外还可以表示 null 值。可空类型可通过下面两种方式中的一种声明:

    1、System.Nullable<T> variable

    2、T? variable

    T 是可空类型的基础类型。T 可以是包括 struct 在内的任何值类型;但不能是引用类型。

    Nullable<int> x =5等价于 int?x=5 可空类型
    
    1.值类型后加问号表示此类型为可空类型,如int? i = null;
    2.可空类型与一元或二元运算符一起使用时,只要有一个操作数为null,结果都为null;
    3.比较可空类型时,只要一个操作数为null,比较结果就为false。
    
    在使用的时候要注意如下几点:
    (1)因为可空类型可能为空,于是很多运算法则将不再简单适用,比如A+B,如果A或者B当中有一个或者两个为可空类型,那么它们便不能简单相加,因为它们可能会为空,这时结果也就可能会为空,所以一定要先使用HasValue属性测试是否为空,或者使用GetValueOrDefault属性返回该基础类型所赋的值或默认值,再或者使用??运算符分配默认值,当前值为空的可空类型被赋值给非空类型时将应用该默认值,比如int?x=null;int y=x??-1;,但是切不可直接进行运算。
    (2)可空类型可以强制转换为对应的基础类型,比如int?x=3;int y=(int)x;,但在转换之前一定要先测试是否不为空,如果为空的话就会出错。
    (3)由于以上两点原因,建议不要随意使用可空类型,只在必要的时候才使用,使用时一定要小心谨慎,随时记得判断是否为空。
    

      

  • 相关阅读:
    php配置文件——.user.ini
    php反序列化漏洞
    [极客大挑战 2019]PHP 反序列化
    [极客大挑战 2019]Http http请求头XFF欺骗
    第十章嵌入式Linux的调试技术
    第九章硬件抽象层:HAL
    第八章让开发版发出声音:蜂鸣器驱动
    第七章LED将为我闪烁:控制发光二极管
    第六章第一个Linux驱动程序:统计单词个数
    第五章搭建S3C6410开发板的测试环境
  • 原文地址:https://www.cnblogs.com/alphafly/p/3898861.html
Copyright © 2011-2022 走看看