【问题标题】:What's the "right" way to convert data from one type to another?将数据从一种类型转换为另一种类型的“正确”方法是什么?
【发布时间】:2009-10-09 13:25:42
【问题描述】:

我很好奇在 .NET 中转换内置类型的“正确”方法是什么。目前我使用Convert.To[type]([variable]) 没有任何空值检查或任何东西。最好的方法是什么?

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    许多类型都有可以使用的 TryParse 方法。例如:

    string input = null;
    bool result;
    Boolean.TryParse(input, out result);
    // result ...
    

    上面是有效的,当要解析的输入为空时不会抛出异常。

    在将项目转换为字符串时,您几乎总是可以依赖对对象调用 ToString() 方法。但是,在 null 对象上调用它会引发异常。

    StringBuilder sb = new StringBuilder();
    Console.WriteLine(sb.ToString()); // valid, returns String.Empty
    StringBuilder sb = null;
    Console.WriteLine(sb.ToString()); // invalid, throws a NullReferenceException
    

    一个例外是在可空类型上调用 ToString(),它也会返回 String.Empty。

    int? x = null;
    Console.WriteLine(x.ToString()); // no exception thrown
    

    因此,调用 ToString 时要小心;根据对象,您可能必须明确检查 null。

    【讨论】:

    • 我最喜欢的是当我看到这样的代码时: string test = "123"; txtBox.Text = test.ToString();大声笑
    【解决方案2】:

    看到这个link

    在大多数情况下,演员表说“这 A 类型的对象实际上是一个对象 B型-衍生自-A" Convert.To*() 函数说这个 对象不是 B 型,但有 有一种方法可以转换为 B 型”

    【讨论】:

    • 我了解什么是转换,但我想知道最好的方法。
    【解决方案3】:

    某些类型,例如int (Int32) 具有TryParse 方法。 如果存在这样的方法,我会尝试使用它。 否则,我会按照您的概述进行空值检查,然后几乎是 Convert.To

    不确定是否有“正确”的方式,就像大多数任务一样,它是上下文相关的。

    善良,

    【讨论】:

      【解决方案4】:

      视情况而定。我最好的建议是学习并熟悉,这样您就可以自己做出更好的选择,但您可能应该先研究以下内容

      System.Int32.TryParse()
      

      (大多数基本类型都有等价物)

      DateTime.ParseExact()

      【讨论】:

        猜你喜欢
        • 2020-05-27
        • 1970-01-01
        • 1970-01-01
        • 2011-09-24
        • 1970-01-01
        • 2012-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多