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

时间:2009-04-02 10:59:43

标签: c#

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

例如: -

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

6 个答案:

答案 0 :(得分:20)

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

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

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

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

答案 1 :(得分:9)

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

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

答案 2 :(得分:1)

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

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

只有当你要转换的类型(目标类型)与正在投射的对象的类型相同或目标类型是强制转换对象的超类或接口时,强制转换才会成功。

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

答案 3 :(得分:1)

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

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

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

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

答案 4 :(得分:0)

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

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

public override string ToString()

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

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

答案 5 :(得分:0)

如果你认为对象可能为null或者你的应用程序会出现例子,那么还有一件事情永远不会使用.ToString():

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

相关问题