为什么此字符串被强制转换为 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
变量中。
为什么编译器要"添加"string
和object
?(string)(object)num + (string)"some text";
不是更有意义吗?
编译器
将对a + b
的调用更改为对String.Concat()
的调用。该方法具有可接受类型参数的唯一覆盖是 String.Concat(Object, Object)
。因此,这两个参数都需要转换为Object
,然后才能传递给方法。
有关更多信息,请查看 sstan 链接到的文章 - 字符串 = 字符串 + int:幕后是什么?