我可以覆盖Convert.ToDateTime()吗?

时间:2012-04-11 06:10:01

标签: c# datetime

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

3 个答案:

答案 0 :(得分: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 - 我从未非常喜欢其宽松,当前文化特定的行为。这取决于数据的来源。你知道格式吗?是在用户的文化中,还是在不变的文化中? (基本上,它是用户输入的文本,还是某些机器生成的格式?)

答案 1 :(得分:2)

ToDateTime无法覆盖,但您可以使用TryParse

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

答案 2 :(得分:1)

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