【发布时间】:2014-11-10 07:46:24
【问题描述】:
为什么:
int x = 3;
string y = x.toString();
^ 有效
和
int x = 3;
string y = (string)x;
^ 不起作用
好奇心把我带到这里......
【问题讨论】:
为什么:
int x = 3;
string y = x.toString();
^ 有效
和
int x = 3;
string y = (string)x;
^ 不起作用
好奇心把我带到这里......
【问题讨论】:
因为第一个使用方法int.ToString 将int convert 转换为string 表示,而第二个尝试将cast int 转换为string行不通,因为它实际上不是string,而是int。
Read:
显式转换(强制转换):显式转换需要强制转换 操作员。当信息可能在 转换,或者当其他转换可能不成功时 原因。
String 和Int32 根本不相关,所以它们不能相互转换,编译器已经抛出错误。有时编译器会成功编译,但当强制转换失败时,您会在运行时收到 InvalidCastException。
阅读:Compile-time and runtime casting c#
请注意,您可以通过ToString转换int 到string,您可以通过int.Parse转换string 到int (或int.TryParse):
int z = int.Parse("3");
【讨论】:
Int.tostring() is method and in second code you are doing cast from Int structure to string Class 这给出错误。
ToString 不是类型转换。它是一种方法,继承自object 并在System.Int32 中实现,它将整数转换为字符串表示形式。
int 不是字符串,因此强制转换失败。 ToString 方法是您放置类型转换没有的自定义逻辑的地方,用于将实例转换为其字符串表示形式。您可以(并且经常应该)在您的自定义类和结构中自己实现ToString - 拥有有意义的字符串表示通常很有用。
【讨论】: