3

我可以覆盖Convert.ToDateTime()吗?我不希望 100 次或更多检查字符串是否为 nul,如果不是则将其转换为 DateTime。我可以重写此函数以检查是否为 null 然后将返回 null 否则将其转换。

4

3 回答 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- 我从来没有非常喜欢它的宽大,当前文化特定的行为。不过,这取决于数据的来源。你知道格式吗?是在用户的文化中,还是在不变的文化中?(基本上,是用户输入的文本,还是某种机器生成的格式?)

于 2012-04-11T06:13:10.843 回答
2

ToDateTime不能被覆盖,但你可以使用TryParse

bool valid = DateTime.TryParse("date string", out d);
于 2012-04-11T06:14:46.833 回答
1

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

于 2012-04-11T06:12:48.827 回答