类型转换之间的冲突

时间:2014-11-10 07:46:24

标签: c# casting

为什么:

int x = 3;
string y = x.toString();

^有效

int x = 3;
string y = (string)x;

^不起作用

好奇心把我带到了这里......

2 个答案:

答案 0 :(得分:2)

因为第一个使用方法int.ToString转换一个int到它的string表示,而第二个尝试cast Read 1}}到int这不起作用,因为它实际上不是string而是string

Compile-time and runtime casting c#

  

显式转换(强制转换):显式转换需要强制转换   运营商。当信息可能丢失时,需要进行强制转换   转换,或转换可能对其他转换不成功   原因。

intString根本不相关,因此它们不能相互转换,并且编译器已经抛出错误。有时编译器会成功编译,但在转换失败时会在运行时获得Int32

阅读:{{3}}

请注意,您可以转换 InvalidCastExceptionint通过string,您可以转换一个ToString通过string(或int)到int.Parse

int.TryParse

答案 1 :(得分:0)

ToString不是类型转换。这是一个继承自object并在System.Int32中实现的方法,它将整数转换为字符串表示形式。

int不是字符串,因此正确地进行转换失败。 ToString方法是将类型转换没有的自定义逻辑放在其中,用于将实例转换为其字符串表示形式。您可以(通常应该)在自定义类和结构中自己实现ToString - 拥有有意义的字符串表示通常很有用。