【问题标题】:Conflict between typecasting [duplicate]类型转换之间的冲突[重复]
【发布时间】:2014-11-10 07:46:24
【问题描述】:

为什么:

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

^ 有效

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

^ 不起作用

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

【问题讨论】:

    标签: c# casting


    【解决方案1】:

    因为第一个使用方法int.ToStringint convert 转换为string 表示,而第二个尝试将cast int 转换为string行不通,因为它实际上不是string,而是int

    Read

    显式转换(强制转换):显式转换需要强制转换 操作员。当信息可能在 转换,或者当其他转换可能不成功时 原因。

    StringInt32 根本不相关,所以它们不能相互转换,编译器已经抛出错误。有时编译器会成功编译,但当强制转换失败时,您会在运行时收到 InvalidCastException

    阅读:Compile-time and runtime casting c#

    请注意,您可以通过ToString转换intstring,您可以通过int.Parse转换stringint (或int.TryParse):

    int z = int.Parse("3");
    

    【讨论】:

    • Tim is right int int first code line Int.tostring() is method and in second code you are doing cast from Int structure to string Class 这给出错误。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-25
      • 1970-01-01
      • 2012-04-15
      • 1970-01-01
      • 1970-01-01
      • 2021-01-01
      • 1970-01-01
      • 2015-05-29
      相关资源
      最近更新 更多