为什么此字符串被强制转换为 DLL 中的对象

本文关键字:DLL 对象 转换 字符串 为什么 | 更新日期: 2023-09-27 17:56:41

我正在比较 2 个 DLL,我不经常这样做,当我看到这一行时我很困惑:

myObj.ErrorString = (string) (object) num + (object) " file(s) failed to import. Run the Import Report for more information.";

num是一个int,它被投射到一个object,然后投射到一个string。我的硬编码字符串被强制转换为object,以便"添加到"已转换为字符串的num变量中。

为什么编译器要"添加"stringobject(string)(object)num + (string)"some text";不是更有意义吗?

为什么此字符串被强制转换为 DLL 中的对象

编译器

将对a + b的调用更改为对String.Concat()的调用。该方法具有可接受类型参数的唯一覆盖是 String.Concat(Object, Object) 。因此,这两个参数都需要转换为Object,然后才能传递给方法。

有关更多信息,请查看 sstan 链接到的文章 - 字符串 = 字符串 + int:幕后是什么?