Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么将此字符串强制转换为DLL中的对象?_C#_.net - Fatal编程技术网

C# 为什么将此字符串强制转换为DLL中的对象?

C# 为什么将此字符串强制转换为DLL中的对象?,c#,.net,C#,.net,我比较了2个DLL,这是我不经常做的,当我看到这一行时,我感到困惑: myObj.ErrorString = (string) (object) num + (object) " file(s) failed to import. Run the Import Report for more information."; num是一个int,它被强制转换为对象,然后转换为字符串。我的硬编码字符串正在转换为对象,以便“添加到”已转换为字符串的num变量 为什么编译器要“添加”一个字符串和一个对象

我比较了2个DLL,这是我不经常做的,当我看到这一行时,我感到困惑:

myObj.ErrorString = (string) (object) num + (object) " file(s) failed to import. Run the Import Report for more information.";
num
是一个
int
,它被强制转换为
对象,然后转换为
字符串。我的硬编码字符串正在转换为
对象
,以便“添加到”已转换为字符串的
num
变量


为什么编译器要“添加”一个
字符串
和一个
对象
?如果它是
(string)(object)num+(string)“some text”,不是更有意义吗

编译器将对
a+b
的调用更改为对的调用。具有可接受类型参数的方法的唯一重写是。因此,两个参数都需要强制转换为
对象
,然后才能传递给方法


有关更多信息,请查看链接到的文章-

查看string.concat的工作原理;这也许可以为你解释;这也是一个很好的例子,说明了为什么需要显式转换某些内容以避免装箱etc@TheBeardedLlama那怎么解释呢,这没有道理。像这样打拳击是没有意义的,最后它只是myObj.ErrorString=num+“文件…”;你像人一样思考,而不是像电脑一样思考:在这个角色中没有拳击;
String
Object
都是引用类型。您如何“比较”这些DLL?我猜你在用某种反汇编程序,对吧?这看起来像是反汇编程序的工件,而不是编译器。试着看看MSIL。啊,是的,我道歉。这是真的,那是一个拳击演员阵容。好吧,那很简单。我现在就写一个答案。@TheBeardellama-为什么不?@TheBeardellama-为什么不回答一个问题,即使它是一个(边界)重复的问题?