Ros*_*tov 9 c# string int explicit implicit
有一个同事问我这个问题,在我脑子里迷茫的状态我没有答案:
你为什么这样做:
string ham = "ham " + 4;
Run Code Online (Sandbox Code Playgroud)
但不是:
string ham = 4;
Run Code Online (Sandbox Code Playgroud)
如果在连接时存在字符串转换的隐式转换/操作,为什么在将其指定为字符串时不一样?(当然,没有做一些运算符重载)
Bri*_*sen 19
当连接编译器时,将语句"ham" + 4转换为调用String.Concat,这需要两个object参数,因此值4被加框然后ToString在其上调用.
对于赋值,没有隐式转换int为string,因此您无法4在string未明确转换的情况下分配给它.
换句话说,编译器处理两个赋值的方式非常不同,尽管它们在C#中看起来非常相似.