可空值类型

备注

 
 

一种类型认为是可以为 null,如果它可以分配一个值,也可以分配null,这意味着类型具有无论如何没有值。 默认情况下,所有都引用类型,如String,是否可以为 null,但所有值类型,如Int32,不是。

在 C# 和 Visual Basic 中,你可以将值类型作为可以为 null 标记使用?后的值类型的表示法。 例如,int?在 C# 或Integer?在 Visual Basic 中声明可以分配的整数值类型null

Nullable<T>结构支持使用值类型为 null 的类型,因为引用类型可以为 null 设计使然。

Nullable类支持互补Nullable<T>结构。 Nullable类支持获取可以为 null 的类型的基础类型,其基础值类型可以为 null 的类型的对比较和相等操作不支持泛型比较和相等性操作。

两个基本成员Nullable<T>结构不是HasValueValue属性。 如果HasValue属性Nullable<T>对象是true,可通过访问对象的值Value属性。 如果HasValue属性是false,对象的值是不确定并尝试访问Value属性将引发InvalidOperationException

可以为 null 的类型进行装箱时,公共语言运行时自动框的基础值Nullable<T>对象,而不Nullable<T>对象本身。也就是说,如果HasValue属性是true的内容Value属性进行装箱。 未装箱可以为 null 的类型的基础值时,公共语言运行时创建一个新Nullable<T>结构初始化为基础的值。

如果HasValue可以为 null 的类型的属性是false,装箱操作的结果是null。 因此,如果装箱可以为 null 的类型传递给需要的对象自变量的方法,该方法必须准备好处理这种情况,其中的参数是null。 当null是取消装箱到可以为 null 的类型,公共语言运行时创建一个新Nullable<T>结构并初始化其HasValue属性false

Nullable 类    应该是提供几个可供  值类型null  操作的(支持可为其分配) 方法

  GetUnderlyingType(Type nullableType)方法是用来返回一个可为空类型的基础类型,如果 nullableType 参数不是一个封闭的Nullable<T>泛型,则返回null

 1     Console.WriteLine(Nullable.GetUnderlyingType(typeof(Nullable<int>)));
 2     //输出结果:System.Int32
 3
 4     Console.WriteLine(Nullable.GetUnderlyingType(typeof(Nullable<>)) == null);
 5     //输出结果:True
 6
 7     Console.WriteLine(Nullable.GetUnderlyingType(typeof(int)) == null);
 8     //输出结果:True
 9
10     Console.WriteLine(Nullable.GetUnderlyingType(typeof(string)) == null);
11     //输出结果:True

支持 可以分配 的值类型null。 此类不能被继承。

一种类型认为是可以为 null,如果它可以分配一个值,也可以分配null,这意味着类型具有无论如何没有值。 默认情况下,所有都引用类型,如String,是否可以为 null,但所有值类型,如Int32,不是。

在 C# 和 Visual Basic 中,你可以将值类型作为可以为 null 标记使用?后的值类型的表示法。 例如,int?在 C# 或Integer?在 Visual Basic 中声明可以分配的整数值类型null

Nullable类支持互补Nullable<T>结构。 Nullable类支持获取可以为 null 的类型的基础类型,其基础值类型可以为 null 的类型的对比较和相等操作不支持泛型比较和相等性操作。

可以为 null 的类型进行装箱时,公共语言运行时自动框的基础值Nullable<T>对象,而不Nullable<T>对象本身。 也就是说,如果HasValue属性是true的内容Value属性进行装箱。 如果HasValue属性是falsenull进行装箱。 未装箱可以为 null 的类型的基础值时,公共语言运行时创建一个新Nullable<T>结构初始化为基础的值。

遇到的问题

DataRow 里面 取数据 取出来 Object  如果有值 赋到 模型上,没有就赋 null

字段也为可空的值类型  但就是报错

在外面定义个对应可空值类型  然后赋值 就解决了

这样也行 

给Guid 的 空

给 int 的空 报错

无法确定条件表达式的类型,因为“<null>”和“System.DateTime”之间没有隐式转换 解决办法

 

无法确定条件表达式的类型,因为“<null>”和“System.DateTime”之间没有隐式转换----解决办法

当在C#使用可空类型时要注意类型间的一致,出现上述和DateTime无法转换的问题就是没有注意类型间的一致,例如,当给一个可空的时间类型字段赋值时不能使用null,而要使用一个DateTime? 类型。

例子:(报错了)

  public DateTime? time { get; set; }

  time = item.HospOutDate.HasValue ? DateTime.Parse(item.HospOutDate.Value.ToString("yyyy-MM-dd HH:mm:ss")) : null;

错误提示:无法确定条件表达式的类型,因为“<null>”和“System.DateTime”之间没有隐式转换

解决办法:

添加: DateTime? TimeNull = null;

time = item.HospOutDate.HasValue ? DateTime.Parse(item.HospOutDate.Value.ToString("yyyy-MM-dd HH:mm:ss")) : TimeNull ;

说明: 总结

可空值类型 是个泛型结构体

Nullable<int>

Nullable<Guid>

Nullable<DataTime>

虽然初始值都是 null

但 是不同类型的null

所有不能直接赋  会报错

https://www.cnblogs.com/tdfblog/p/Nullable-Types-in-Csharp-Net.html#h7

工作总结 无法确定条件表达式的类型,因为“<null>”和“System.DateTime”之间没有隐式转换 解决办法 object——Nullable<T> (可空类型)的更多相关文章

  1. 无法确定条件表达式的类型,因为“<null>”和“System.DateTime”之间没有隐式转换----解决办法

    例子:(报错了) public DateTime? time { get; set; } time = item.HospOutDate.HasValue ? DateTime.Parse(item. ...

  2. JSP——JavaServer Page中的隐式对象(implicit object)、指令(directive)、脚本元素(scripting element)、动作(action)、EL表达式

    目录 1.JSP概述 2.注释(comment) 2.1.JSP注释 2.2.HTML注释 3.隐式对象(implicit object) 3.1.隐式对象清单 3.2.request对象 3.3.o ...

  3. 【转】SQL SERVER标量表达式的隐式转换

    在SQL Server中的数据类型中,存在着优先级的问题.标量表达示的返回结果类型也会根据操作数的类型而定,如1 +'1'=2.而不是'11',因些Int型的优先级比VARCHAR型的优先级要高.所以 ...

  4. ECMAScript1.1 js书写位置 | 声明变量 | 基本数据类型 | 数据类型转换 | 操作符 | 布尔类型的隐式转换

    js书写位置 由于在写css样式时使用的时双引号,所以我们在写js代码时建议使用单引号(‘’)! 行内式 <input type="button" value="点 ...

  5. Atitit.变量的定义 获取 储存 物理结构 基本类型简化 隐式转换 类型推导 与底层原理 attilaxDSL

    Atitit.变量的定义 获取 储存 物理结构 基本类型简化 隐式转换 类型推导 与底层原理 attilaxDSL 1.1. $ 美元字符, php 黑头1 1.2. 默认变量的范围和声明:1 1.3 ...

  6. c#中的Nullable(可空类型)

    在C#中使用Nullable类型(给整型赋null值的方法) 在C#1.x的版本中,一个值类型变量是不可以被赋予null值的,否则会产生异常.在C#2.0中,微软提供了Nullable类型,允许用它定 ...

  7. js基本类型,隐式转换,变量

    Js笔记(脚本语言 node.js) Js五种基本类型:数字,字符串,布尔,null,undefined: HTML结构,表现,行为分离. 变量命名规则: 以字母或[下划线开始($)]不推荐,后面跟上 ...

  8. c++中istream类型到bool类型的隐式转换

    事情的起因是见到了这种用法: while(cin>>m>>n&&m&&n) { } 现在分析一下,cin>>m>>n返回 ...

  9. 类型同时存在于A.dll和B.dll中的解决办法

    引用B.dll后,右键引用中的B.dll属性->别名->Test using的最前面加上 extern alias Test; 使用 Test.MyClass.DoSth();

随机推荐

  1. WebBrowser(超文本浏览框)控件默认使用IE9,IE10的方法

    C#和易语言都可以使用该方法来变更默认的的IE版本 该文是通过修改注册表的方法实现,测试的时候发现易语言本身也是采用的这种方法 操作方法 打开注册表 HKEY_LOCAL_MACHINE (or HK ...

  2. Laravel 5.5 Blade::if 简介

    Laravel 5.5 引入了一个新的黑科技,就是你可以使用 Blade::if 来进行一些简单的逻辑判断啦!想不出应用场景在哪?想象下面的场景: 判断一个用户是否是 admin 判断应用的开发环境不 ...

  3. 我在16ASPX下了一个系统是ACCESS和VS2005做的我想把那个连接数据库的'DB_16aspx'的名字改了进不了了可是?

    靠,在web.config或者其他配置文件中把数据库连接字符串改称你的新名字不就行了

  4. cdq分治浅谈

    $cdq$分治浅谈 1.分治思想 分治实际上是一种思想,这种思想就是将一个大问题划分成为一些小问题,并且这些小问题与这个大问题在某中意义上是等价的. 2.普通分治与$cdq$分治的区别 普通分治与$c ...

  5. Codeforces 1029 E. Tree with Small Distances(树上dp)

    题目直通车:http://codeforces.com/problemset/problem/1029/E 思路大意:在树上做dp,依次更新ar数组,ar[i]表示以i为根节点的子树对答案的最小贡献值 ...

  6. POJ 2135 Farm Tour (费用流)

    [题目链接] http://poj.org/problem?id=2135 [题目大意] 有一张无向图,求从1到n然后又回来的最短路 同一条路只能走一次 [题解] 题目等价于求从1到n的两条路,使得两 ...

  7. Java多线程设计模式(2)生产者与消费者模式

    1 Producer-Consumer Pattern Producer-Consumer Pattern主要就是在生产者与消费者之间建立一个“桥梁参与者”,用来解决生产者线程与消费者线程之间速度的不 ...

  8. Android开发之onCreate

    最近看了一些开发人员做的APP开发,虽然都实现了比较完美的功能,不过很多地方很是牵强!我觉得:作为一个合格软件工程师,最重要的不是你写过多少代码,而是你研究过多少代码!所以,我更倡导多研究系统原本定制 ...

  9. MySQL索引,MySQL性能分析及explain的使用,分析SQL查询性能

    可以使用explain来分析MySQL查询性能,举例如下: 1.使用explain语句去查看分析结果 如 explain select * from test1 where id=1; 会出现: id ...

  10. SQL获取当月天数的几种方法

    原文:SQL获取当月天数的几种方法 日期直接减去int类型的数字 等于 DATEADD(DAY,- 数字,日期) 下面三种方法: 1,日期加一个月减去当前天数,相当于这个月最后一天的日期.然后获取天数 ...