图片 3

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

Posted by

例子:(报错了)

可空值类型

  public DateTime? time { get; set; }

图片 1

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

 

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

备注

 

 

解决办法:

 

添加: DateTime? TimeNull = null;

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

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


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

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

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

基本属性

 

两个基本成员Nullable<T>结构不是HasValue和Value属性。 如果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

 

 

 

图片 2

图片 3

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

图片 4

 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
的类型的对比较和相等操作不支持泛型比较和相等性操作。

相关文章

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注