在C#中定义了一个DateTime类型的变量。在没给它赋值的情况下它默认会得到一个0001-1-1 0:00:00值
如何去除 Datetime的字段会自动赋默认值0001-1-1 0:00:00?
解决方案在:实体类中加入Nullable<T>泛型
实例如下: public class BaseEntity
{
/// <summary>
/// 创建时间
/// </summary>
public virtual Nullable<DateTime> CreateTime { get; set; } /// <summary>
/// 创建者ID
/// </summary>
public virtual string CreateUserId { get; set; }
/// <summary>
/// 修改时间
/// </summary>
public virtual Nullable<DateTime> UpdateTime { get; set; }
/// <summary>
/// 最后修改人Id
/// </summary>
public virtual string UpdateUserId { get; set; }
/// <summary>
/// 删除时间
/// </summary>
public virtual Nullable<DateTime> DeleteTime { get; set; }
/// <summary>
/// 删除人id
/// </summary>
public virtual string DeleteUserId { get; set; }
/// <summary>
/// 是否删除
/// </summary>
public virtual bool IsDeleted { get; set; }
} 总结:在C# 2.0里面的数据类型中,分为值类型和引用类型,引用类型可以初始化为null,可是值类型是不可以的。 比如经常用到的System.Guid类型,要么赋值为Guid.NewId,要么赋值为Guid.Empty。 再比如System.DateTime,默认初始化为DateTime.MinValue。 强行给值类型赋null值,编译就不会通过,会报出类似下面的异常:c#:无法将 NULL 转换成“System.DateTime” 借助Nullable<T>结构体可以实现初始化为null,只能是值类型不可是引用类型 值类型可以通过这种方法变成引用类型,但是引用类型不可以哟。比如下面这段代码: Nullable<string> test = "ddd"; 这段代码编译无法通过,会报出以下异常: 错误 1 类型“string”必须是不可为空的值类型才能用作泛型类型或方法“System.Nullable<T>”中的参数“T”