可空值类型

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


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

 

备注
 
 

Int32,不是。

 例如,int?在 C# 或Integer?在 Visual Basic 中声明可以分配的整数值类型null

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

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

InvalidOperationException。

<T>结构初始化为基础的值。

<T>结构并初始化其HasValue属性false

 

 

 

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


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

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


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

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

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


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

 

 

 此类不能被继承。

Int32,不是。

 例如,int?在 C# 或Integer?在 Visual Basic 中声明可以分配的整数值类型null

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

Nullable<T>结构初始化为基础的值。

 

 

 

 遇到的问题

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


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

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

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

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


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

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

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


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

 

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


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

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


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

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


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

给Guid 的 空

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


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

给 int 的空 报错 

 

 

 

 

 

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


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

 

 

 

无法确定条件表达式的类型,因为“<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 ;

 

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


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

 

 

 

 

说明: 总结 

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

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


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

Nullable<int>

Nullable<Guid>

Nullable<DataTime>

虽然初始值都是 null

但 是不同类型的null

所有不能直接赋  会报错

 

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


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

 

 

 

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

 

无法确定条件表达式的类型,因为“<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 ;

相关文章:

  • 2021-07-01
  • 2021-08-16
  • 2022-01-30
  • 2022-12-23
  • 2022-12-23
  • 2021-10-26
猜你喜欢
  • 2021-07-10
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-05-20
  • 2021-11-08
  • 2022-12-23
相关资源
相似解决方案