为什么:
int x = 3;
string y = x.toString();
^有效
和
int x = 3;
string y = (string)x;
^不起作用
好奇心把我带到了这里......答案 0 :(得分:2)
因为第一个使用方法int.ToString
来转换一个int
到它的string
表示,而第二个尝试cast Read 1}}到int
这不起作用,因为它实际上不是string
而是string
。
Compile-time and runtime casting c#:
显式转换(强制转换):显式转换需要强制转换 运营商。当信息可能丢失时,需要进行强制转换 转换,或转换可能对其他转换不成功 原因。
int
和String
根本不相关,因此它们不能相互转换,并且编译器已经抛出错误。有时编译器会成功编译,但在转换失败时会在运行时获得Int32
。
阅读:{{3}}
请注意,您可以转换 InvalidCastException
到int
通过string
,您可以转换一个ToString
通过string
(或int
)到int.Parse
:
int.TryParse
答案 1 :(得分:0)
ToString
不是类型转换。这是一个继承自object
并在System.Int32
中实现的方法,它将整数转换为字符串表示形式。
int不是字符串,因此正确地进行转换失败。 ToString
方法是将类型转换没有的自定义逻辑放在其中,用于将实例转换为其字符串表示形式。您可以(通常应该)在自定义类和结构中自己实现ToString
- 拥有有意义的字符串表示通常很有用。