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