ConvertNullDate扩展方法

本文关键字:方法 扩展 ConvertNullDate | 更新日期: 2023-09-27 18:16:59

这门课怎么了?我试图达到扩展方法,但不能

namespace BO
{   
 public static class Helper
    {
        public static DateTime? ConvertNullDate(this DateTime date)
        {
            return date != DateTime.MinValue ? date : (DateTime?)null;
        }
    }
}

如果不可能,解决方案应该是什么

ConvertNullDate扩展方法

如果您的输入是DateTime?,那么您不需要将其转换为DateTime? !

所以我认为你应该在

下面
public static DateTime? ConvertNullDate(this DateTime date)
{
    return date != DateTime.MinValue ? date : (DateTime?)null;
}

问题将是它所在的namespace。您需要在代码文件(您想在其中使用它的那个)的顶部添加一个using。例如,如果namespacefoo,那么添加:

using foo;

那么现在你可以输入:

DateTime? dt = DateTime.Now;
var newDt = dt.ConvertNullDate();

,但我质疑输入值。目前您将其定义为this DateTime? date,但我认为您希望输入值为DateTime,如this DateTime date,因此您可以这样做:

var dt = DateTime.MinValue.ConvertNullDate();

dt的值为null。换句话说,如果不可空的DateTime的值是MinValue,则返回null,否则返回日期,但为DateTime?类型。

您应该尝试返回default(Datetime?)而不是null:

public static DateTime? ConvertNullDate(this DateTime? date)
{
   if (date != null && date.Value != DateTime.MinValue)
      return date;
   return default(DateTime?);
}