将int转换为字符串与C#中的ToString()方法有什么区别?

将Int转换为字符串和ToString()方法有什么区别?

例如 :-

int MyInt = 10; label1.Text = (string)MyInt; // This Doesn't Work label1.Text = MyInt.ToString(); // but this does. 

好吧, ToString()只是一个返回字符串的方法调用。 它在object定义,因此调用任何东西(除了空引用)总是有效的。

演员可以做以下四件事之一:

  • 预定义的转换,例如intbyte
  • 可能失败的执行时引用转换,例如将object转换为string ,其检查目标对象是否是适当的类型
  • 用户定义的转换(基本上调用具有特殊名称的静态方法),这在编译时是已知的
  • 可能失败的拆箱转换,例如将object转换为int

在这种情况下,您要求编译器发出代码以从int转换为string 。 以上选项均不适用,因此您会收到编译时错误。

不同之处在于,使用强制转换,您要求编译器假设int实际上是一个字符串,但事实并非如此。

使用ToString(),你要求int的字符串表示,实际上是一个字符串:)

嗯,ToString()正在调用一个返回整数字符串表示的方法。

当你强制转换时,你没有返回一个表示,你说你想引用同一个对象(在这种情况下,值类型),但是你想引用它作为一个不同的类型。

如果您要转换的类型(目标类型)与要转换的对象的类型相同或目标类型是转换对象的超类或接口,则转换将成功。

实际上,可以在转换中进行转换,提供源或目标类型声明隐式或显式转换,但Int32类型不会对String目标类型执行此操作。

.ToString()方法是在System.Object类型(从中派生所有.NET类型)上实现的方法,可以在特定派生类型上重写。

因此,“int”类型有自己的.ToString()方法,它知道所有关于int的内容,以及如何将它们转换为字符串表示。

使用(string)myint显式转换,您要求编译器强制转换/转换一种类型到另一种类型(在这种情况下,将int转换为字符串)。 它失败了,因为编译器说字符串和int是不兼容的类型。

因此,显式转换失败,因为编译器说int 不是字符串,但.ToString()调用成功,因为int类型表示它的值可以表示为字符串,并且这样做!

ToString()方法是编程中最有用的方法之一,许多其他语言(如Java)具有在Object级别实现的完全相同的方法。

您可以定义自己的,C#中的签名必须始终如下:

 public override string ToString() 

这意味着此方法将覆盖Object-class中的一个define并返回一个字符串。 在里面,你以你想要的方式操纵你的字符串,然后返回结果。

此外,您可以在该整数上使用ToString的具体原因是因为在C#中,整数是Struct Int32所有实例。
看作Int32处于类的同一级别,它可以有自己的方法,其中一个是ToString()。

还有一件事情永远不会使用.ToString()如果您认为该对象可能为null或您的应用程序将是例如:

//模拟可能发生的问题
object obj = null; obj.ToString();