zoukankan      html  css  js  c++  java
  • 可以为 null 的类型

    1 //编译错误,无法将 Null 转换成“int”,因为它是一种不可以为 null 值的类型。
    2 //由于值类型的容量只够表示适合于该类型的值,因此它不可为空;值类型没有表示空值所需的额外容量。
    3   private int one = null;
    4
    5
    6 //编译通过,T? 语法是 Nullable<T> 的简写,此处的 T 为值类型。 这两种形式可以互换。Nullable<T> 结构支持只将一个值类型用作可以为 null 的类型
    7   private int? two = null;
    8
    9 public void Test()
    10 {
    11 //如果two变量包含值,则 HasValue 属性返回 True;或者,如果two变量的值为空,则返回 False。
    12 if (two.HasValue)
    13 {
    14 //如果已赋值,则 Value 属性返回该值。 否则,将引发 System.InvalidOperationException。
    15 one = two.Value;
    16 }
    17 //GetValueOrDefault()返回值:如果 HasValue 属性为 true,则为 Value 属性的值;否则为当前 Nullable<T> 对象的默认值。
    18 //默认值的类型为当前 Nullable<T> 对象的类型参数,而默认值的值中只包含二进制零。
    19 one=two.GetValueOrDefault();
    20
    21 //使用 ?? 运算符分配默认值,在将当前值为 null 的可以为 null 的类型赋值给不可以为 null 的类型时,将应用该默认值.
    22 int four = two ?? 1;
    23 }
    24
    25 //编译错误,类型“string”必须是不可以为 null 值的类型才能用作泛型类型或方法“System.Nullable<T>”中的参数“T”
    26 // 无法创建基于引用类型的可以为 null 的类型。 (引用类型已支持 null 值。)
    27 private System.Nullable<string > three = null;
    28
    29 /**
    30 * 应用:根据具体环境,使用可以为 null 的类型来表示存在或不存在的事物。
    31 * 数据库表的某个可空列可能存在于表的某一行中,但不存在于另一行中。
    32 * 可将该列表示为类中的一个字段,并可以将该字段定义为值类型。 该字段可包含列的所有有效值,
    33 * 但不能提供一个附加值来表示列不存在。 在这种情况下,应将该字段定义为可以为 null 的类型,而不是值类型。
    34 */

     主要是在实体Model创建时去选择 是用值类型 还是使用可为null 的类型

  • 相关阅读:
    PHP中simpleXML递归实现XML文件与数组的相互转化(原创)
    关于本地服务器localhost请求Forbidden解决办法
    PHP中XPATH 实现xml及html文件快速解析(附xml做小型数据库实现六级单词快速查询实例)
    win8忘记开机密码解决方法汇总
    HTML5的FileAPI实现文件的读取及超大文件的上传
    FormData实现form表单的数据打包
    Ajax_iframe文件上传
    深入浅出JSONP--解决ajax跨域问题
    2017ACM暑期多校联合训练
    2017ACM暑期多校联合训练
  • 原文地址:https://www.cnblogs.com/bizprosdd/p/1895277.html
Copyright © 2011-2022 走看看