将Int转换为字符串和使用ToString()方法有什么区别?
例如:
int MyInt = 10;
label1.Text = (string)MyInt; // This Doesn't Work
label1.Text = MyInt.ToString(); // but this does.
将Int转换为字符串和使用ToString()方法有什么区别?
例如:
int MyInt = 10;
label1.Text = (string)MyInt; // This Doesn't Work
label1.Text = MyInt.ToString(); // but this does.
ToString()
是一个方法调用,它返回一个字符串。它在object
中定义,因此对于除了null引用之外的任何内容都可以调用。
强制转换运算符可以执行以下四种操作之一:
int
到byte
object
转换为string
,这会检查目标对象是否是适当的类型object
转换为int
在这种情况下,您要求编译器发出代码以从int
到string
进行转换。上述选项都不适用,因此您会得到一个编译时错误。
不同之处在于,使用强制类型转换语法时,您要求编译器认为int实际上是一个字符串,但这并不是事实。
使用ToString()方法时,您要求获取int的字符串表示,该表示确实是一个字符串:)
Um,ToString()是调用一个返回整数字符串表示的方法。
当你进行类型转换时,你并不是返回一个表示,而是表明你想引用相同的对象(在这种情况下是值类型),但你想将它作为不同类型进行引用。
只有当目标类型与被转换对象相同或目标类型是被转换对象的超类或接口时,类型转换才会成功。
实际上,在类型转换中进行转换是可能的,前提是源类型或目标类型声明了隐式或显式转换,但Int32类型对于String目标类型并没有这么做。
.ToString() 方法是在 System.Object 类型上实现的方法(所有 .NET 类型都从中派生),并且可以在特定派生类型上进行重写。
因此,“int”类型有它自己的 .ToString() 方法,它知道所有关于整数的信息,并且知道如何将它们转换为字符串表示形式。
使用 (string)myint 显式转换,您正在请求编译器强制将一种类型转换/转换为另一种类型(在这种情况下,将 int 转换为 string)。它失败了,因为编译器说字符串和整数是不兼容的类型。
因此,显式转换失败,因为编译器说 int 不是字符串,但是 .ToString() 调用成功,因为 int 类型说它的值可以被表示为字符串,并且确实如此!
ToString()
方法是编程中最有用的方法之一,许多其他语言(如Java)在 Object
级别上都实现了相同的方法。
您可以定义自己的方法,但在 C# 中签名必须始终如此:
public override string ToString()
这意味着该方法将覆盖在Object类中定义的方法并返回一个字符串。在方法内部,您可以按照任何方式操作字符串,然后返回结果。
此外,您可以使用ToString()方法转换整数的具体原因是因为在C#中,整数都是Struct Int32
的实例。
由于Int32
与类处于同一级别,因此它可以拥有自己的方法之一就是ToString()。
还有一件事情,如果你认为对象可能为空或者应用程序会崩溃,请不要使用.ToString() 示例:
//模拟可能出现的问题
object obj = null;
obj.ToString();
string x = 10;
- 如果存在隐式转换,则将是有效的。基本上,C#提供了类型之间的转换,这些类型非常相似,或者其中一个可以被视为另一个的超集,例如int和long、float和double之间的转换。数字和字符串实际上是非常不同的东西。 - Jon Skeet