TryParse 为可空类型

发布于 2024-12-08 10:24:43 字数 281 浏览 1 评论 0原文

我想尝试将 string 解析为 DateTime?,如果失败,则将值设置为 null。我能想到的唯一方法是以下,但它看起来不太整洁。

DateTime temp;
DateTime? whatIActuallyWant = null;
if (DateTime.TryParse(txtDate.Text, out temp)) whatIActuallyWant = temp;

这是唯一的方法吗?

I would like to try to parse a string as a DateTime?, and if it fails then set the value to null. The only way I can think to do this is the following, but it doesn't seem very neat.

DateTime temp;
DateTime? whatIActuallyWant = null;
if (DateTime.TryParse(txtDate.Text, out temp)) whatIActuallyWant = temp;

Is this the only way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

辞旧 2024-12-15 10:24:43

怎么样:

DateTime? whatIActuallyWant = DateTime.TryParse(txtDate.Text, out temp) ? (DateTime?)temp : null;

你可以从中得到一行(不幸的是需要 DateTime? 强制转换,否则无法编译) - 但我个人可能会坚持使用 null初始化和随后的 if - 它更容易阅读。

How about this:

DateTime? whatIActuallyWant = DateTime.TryParse(txtDate.Text, out temp) ? (DateTime?)temp : null;

You get a one-liner out of this (unfortunately need the DateTime? cast otherwise won't compile) - but personally I would probably stick to the null initialization and the subsequent if - it's just easier to read.

柒夜笙歌凉 2024-12-15 10:24:43

如果您要多次执行此操作,那么我建议添加一个简单的扩展方法以方便使用...

public static class Extensions
{
    public static DateTime? ToDateTime(this string val)
    {
        DateTime temp;
        if (DateTime.TryParse(val, out temp))
            return temp;
        else 
            return null;
    }
}

然后您可以非常轻松地使用它...

DateTime? ret1 = "01/01/2011".ToDateTime();
DateTime? ret2 = myString.ToDateTime();

If your going to be performing this operation more than once then I recommend adding a simple extension method for ease of use...

public static class Extensions
{
    public static DateTime? ToDateTime(this string val)
    {
        DateTime temp;
        if (DateTime.TryParse(val, out temp))
            return temp;
        else 
            return null;
    }
}

Which you can then use very easily...

DateTime? ret1 = "01/01/2011".ToDateTime();
DateTime? ret2 = myString.ToDateTime();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文