繁体   English   中英

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

[英]Can i override Convert.ToDateTime()?

我可以覆盖Convert.ToDateTime()吗? 我不想检查字符串是否为 nul 100 次或更多次,如果不是则将其转换为 DateTime。 我可以覆盖这个 function 来检查是否是 null 然后将返回 null 否则转换它。

不,您不能覆盖 static 方法。 但是你可以写你自己的static 方法:

// 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本身是不可为 null 的值类型。

您可能还想考虑使用DateTime.ParseExact而不是Convert.ToDateTime - 我从来都不喜欢它宽松的、特定于当前文化的行为。 不过,这取决于数据的来源。 你知道格式吗? 它会出现在用户的文化中,还是不变的文化中? (基本上,它是用户输入的文本,还是某种机器生成的格式?)

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM