C# 我可以覆盖Convert.ToDateTime()吗?
我是否可以重写Convert.ToDateTime()?我不想100次或更多地检查字符串是否为nul,如果不是,则将其转换为DateTime。我是否可以重写此函数以检查是否为null,然后以其他方式将其转换为null。如果您确定字符串的格式正确,则可以使用C# 我可以覆盖Convert.ToDateTime()吗?,c#,datetime,C#,Datetime,我是否可以重写Convert.ToDateTime()?我不想100次或更多地检查字符串是否为nul,如果不是,则将其转换为DateTime。我是否可以重写此函数以检查是否为null,然后以其他方式将其转换为null。如果您确定字符串的格式正确,则可以使用DateTime.Parse。否,您不能重写静态方法。但您可以编写自己的静态方法: // TODO: Think of a better class name - this one sucks :) public static class Mo
DateTime.Parse
。否,您不能重写静态方法。但您可以编写自己的静态方法:
// 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
本身是不可为空的值类型
您可能还想考虑使用,而不是<代码>转换。ToDateTime < /代码> -我从来没有特别喜欢它宽松的、当前的特定于文化的行为。但这取决于数据来自何处。你知道格式吗?它是在用户的文化中,还是在不变的文化中?(基本上,它是用户输入的文本,还是某种机器生成的格式?
ToDateTime
不能被覆盖,但您可以使用TryParse
:
bool valid = DateTime.TryParse("date string", out d);
您不能不使用
DateTime.TryParse
?最好使用.IsNullOrEmpty
进行检查。@V4Vendetta:这取决于所需的行为-OP没有说希望将空字符串视为与null相同的方式。一个空字符串完全可能表示一个bug。