【问题标题】:Is there a difference between the ToString method and casting to string?ToString 方法和转换为字符串之间有区别吗?
【发布时间】:2010-11-11 07:30:17
【问题描述】:
object o;

o.ToString()(string) o 有什么区别吗?

【问题讨论】:

  • 你为什么要问?愿意解释大局吗?

标签: c# .net


【解决方案1】:

有区别,是的。每个对象都有一个ToString 方法,但不是每个对象都可以转换为字符串。

int i = 10;
string s1 = i.ToString(); // OK
string s2 = (string)i;    // Compile error.

object o = 10;
string s3 = o.ToString(); // OK
string s4 = (string)o;    // Runtime error.

【讨论】:

    【解决方案2】:

    ToString() 对象为null 时会引发异常,(string) 不会转换。

    【讨论】:

      【解决方案3】:

      如果您在从对象到字符串的安全转换之后,只需使用:

      string s = Convert.ToString(o);
      

      【讨论】:

        【解决方案4】:

        object.ToString() 会将对象转换为字符串。如果对象有空值,那么它会抛出一个异常,因为没有空值有ToString()方法。

        (string)object 是引用类型到值类型的拆箱过程。 这里object 值正在复制到字符串类型的新实例中。 如果那个object 为空,它将分配空值。

        【讨论】:

          【解决方案5】:

          是的,它们都非常不同。

          string anObjectString = (string)anObject; 是一个类型转换或类型转换只有在类型转换是一个有效的情况下才会成功

          ToString() 是框架中所有对象都可用的方法。它是一个虚方法,默认实现会返回对象的类型名称。

          我们在这里比较苹果和橘子..

          【讨论】:

            【解决方案6】:

            是的,ToString() 是每个类型都实现的方法(因为每个类型都继承自实现该方法的 System.Object)。某些类型可能会覆盖此方法以提供自己的自定义覆盖实现。对ToString() 的调用应该始终成功并返回一个字符串实例(尽管对于某些实现它可能为空)。

            var x = new AnyArbitraryObjectType();
            var y = x.ToString(); // will always succeed (if ToString has not been overridden, or if it has been overridden properly)
            

            强制转换是将给定对象引用转换为类型为字符串的引用。如果要转换的引用不是字符串,则转换将失败。

            var a = "hello";
            var b = 5;
            
            var x = (string)a; // will succeed
            var y = (string)b; // will fail with InvalidCastException
            

            【讨论】:

              【解决方案7】:

              基本上 ToString() 是一个函数,它返回一个字符串,表示您应用它的对象。

              作为类型的字符串就像一个 int - 一个原始类型(在 c# 中它是一个对象)

              【讨论】:

                猜你喜欢
                • 2015-10-18
                • 1970-01-01
                • 1970-01-01
                • 2014-09-30
                • 2011-02-22
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2021-05-12
                相关资源
                最近更新 更多