3

这堂课有什么问题?我试图达到扩展方法但不能

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

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

4

3 回答 3

2

如果您的输入是,DateTime?那么您不需要转换它DateTime?

所以我想你想要下面的东西

public static DateTime? ConvertNullDate(this DateTime date)
{
    return date != DateTime.MinValue ? date : (DateTime?)null;
}
于 2013-06-04T19:13:04.080 回答
1

问题将出在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。换句话说,如果不可为空的值DateTimeMinValuereturn null,否则返回日期,但在一个DateTime?类型中。

于 2013-06-04T19:09:14.443 回答
0

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

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

   return default(DateTime?);
}
于 2013-06-04T19:10:10.497 回答