C#中的Nullable DateTime

vib*_*bhu 1 .net c# datetime nullable variable-assignment

我有两个与DateTime分配相关的问题

DateTime? y = 1 == 1 ? null: DateTime.MaxValue;
DateTime? y = null; // assignment works as expected
Run Code Online (Sandbox Code Playgroud)
  • 为什么第一个赋值在null和之间发生类型转换错误DateTime?
  • 哪个是DateTime?c#中空赋值的首选方法.

    DateTime? x = default(DateTime?); //prints null on console
    
    DateTime? x = null;               // prints null on console
    
    DateTime? x = DateTime.MinValue;  //print 01/01/0001 
    
    Run Code Online (Sandbox Code Playgroud)

suj*_*lil 5

第二个语句DateTime? y = null;只是对可空对象赋值null.

其中第一个是条件赋值,它为真实状态分配一些值,为false分配一些其他值; 在这里,您使用条件运算符来评估条件.根据MSDN first_expression (如果为true则执行)second_expression*(如果为false则执行)*必须是相同类型,或者必须存在从一种类型到另一种类型的隐式转换.在我们的例子中两者都不同所以简单的解决方案是进行显式转换,如下所示:

DateTime? y = 1 == 1 ?(DateTime?) null : DateTime.MaxValue;
Run Code Online (Sandbox Code Playgroud)