我能否重写Convert.ToDateTime()方法?

3

我能否重写Convert.ToDateTime()这个方法?我不想重复一百次以上检查字符串是否为空,如果非空则将其转换为日期时间格式。我能否重写此函数以检查它是否为空,如果是,则返回null,否则进行转换。


你不能使用 DateTime.TryParse 吗? - V4Vendetta
3个回答

4
不,你不能覆盖静态方法。但是你可以编写自己的静态方法:
// TODO: Think of a better class name - this one sucks :)
public static class MoreConvert
{
    public static DateTime? ToDateTimeOrNull(string text)
    {
        return text == null ? (DateTime?) null : Convert.ToDateTime(text);
    }
}

请注意,返回类型必须为DateTime?,因为DateTime本身是一个不可为空的值类型。
你可能还想考虑使用DateTime.ParseExact而不是Convert.ToDateTime——我从来没有喜欢过它的宽容、与当前区域设置有关的行为。不过这取决于数据来自哪里。你知道格式吗?它将在用户的文化中呈现,还是在不变的文化中呈现?(基本上,它是用户输入的文本,还是某种机器生成的格式?)

也许最好使用.IsNullOrEmpty进行检查。 - V4Vendetta
@V4Vendetta:这取决于所需的行为 - OP没有说明希望将空字符串视为null的方式。完全有可能空字符串表示一个错误。 - Jon Skeet

2

ToDateTime 无法被重写,但您可以使用 TryParse

bool valid = DateTime.TryParse("date string", out d);

1

如果您确定您的字符串格式正确,可以使用DateTime.Parse


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接