如果直接用:this._birthday = value ; 如果为空时就会出错。要怎么写好呢?
我暂时这样写的,感觉不对劲 private DateTime _birthday;
/// <summary>
/// 出生日期
/// </summary>
public DateTime Birthday
{
get {return this._birthday;}
set {
try
{
this._birthday =DateTime.Parse(value);
}
catch
{}
}
}还有int 形式的。如果空为是设为什么呢?不明白呢。

解决方案 »

  1.   

    if(value=="") value=null;
    this._birthday =DateTime.Parse(value);
      

  2.   

    这样不行:
    运算符“==”无法应用于“System.DateTime”和“string”类型的操作数
    无法将 NULL 转换成“System.DateTime”,因为它是一种数值类型
      

  3.   

    private DateTime _birthday=DateTime.MinValue;
      

  4.   

    private DateTime _birthday=DateTime.MinValue;这样我想在更新数据库时,如果用户没有填写就在数据库为空. 这样好统计呢.还有int的.如果用户不填更新数据库也为空.怎么设这属性呢.
      

  5.   

    见鬼了,你的这个属性是DateTime类型的,你这样写不是语法错误么?XXXX.Birthday = null;//语法错误,无法将 null 转换成“System.DateTime”,因为它是一种数值类型。
    这样是运行时错误:XXXX.Birthday = (DateTime) obj;//设obj == null。
      

  6.   

    如果你想要让DateTime或者其他ValueType可以为空,只有两种办法,一、约定一个特殊的值代表空,二、用object代替他们,即装箱,或者自己写包装类型。
    装箱方案:object Birthday
    {
      set
      {
       if ( value == null )
         _birthdaynull = true;
       else
         _birthday = (DateTime) value;
      }
    }或者期待C# 2.0中的
    DateTime?
      

  7.   

    if(value=="") value=null;
    this._birthday =DateTime.MinValue;同意 ffjing(猪头不卖)
      

  8.   

    装箱和取消装箱使值类型能够被视为对象。值类型(包括结构类型和 int 这样的内置类型)可以与 object 类型相互转换。
      

  9.   

    更好的装箱方案:object _birthday;object Birthday
    {
      set
      {
        if ( value == null || value is DateTime  )
          _birthday = value;
      }
    }