这个源于一个Model中的日期变量。
Public Class UserModel{
...
private DateTime m_BirthDay;
Public DateTime Birthday{
get{return m_BirthDay;}
set{m_BirthDay=value;}
}
...
}
...
private DateTime m_BirthDay;
Public DateTime Birthday{
get{return m_BirthDay;}
set{m_BirthDay=value;}
}
...
}
如果有人在注册的时候不填写,如何表示呢?
DateTime=null
以上代码编译的时候告知,值类型不能直接赋值null。
为什么值类型不能赋值为null呢?这个道理好像还蛮复杂的:参见http://blog.csdn.net/shyleoking/archive/2010/06/03/5643714.aspx
C#为了解决以上问题,增加了一个可空类型System.Nullable<T>,这样就可以解决以上问题。
Public Class UserModel{
...
private Nullable<DateTime> m_BirthDay;
Public Nullable<DateTime> Birthday{
get{return m_BirthDay;}
set{m_BirthDay=value;}
}
...
}
...
private Nullable<DateTime> m_BirthDay;
Public Nullable<DateTime> Birthday{
get{return m_BirthDay;}
set{m_BirthDay=value;}
}
...
}
也可以简写如下
Public Class UserModel{
...
private DateTime? m_BirthDay;
Public DateTime? Birthday{
get{return m_BirthDay;}
set{m_BirthDay=value;}
}
...
}
...
private DateTime? m_BirthDay;
Public DateTime? Birthday{
get{return m_BirthDay;}
set{m_BirthDay=value;}
}
...
}