我认为 MessageBox.show()
方法接受字符串参数,因此我们需要 ToString()
方法来调用参数。
object k = 999;
MessageBox.Show(k.ToString());
但是当谈到 Console.WriteLine()
时,它本身就足够聪明。我的问题是为什么会有区别?
答案 0 :(得分:2)
如果您查看http://referencesource.microsoft.com/#mscorlib/system/console.cs,8c83114cc3fd109d
然后您会发现WriteLine
类中的Console
函数有很多重载,包括Console.WriteLine(Object value)
。这很方便。
MessageBox.Show
缺少这些不同的重载并接受"仅#34;一个字符串。
答案 1 :(得分:0)
Console.WriteLine
有很多重载,one of which takes an object
并在其上调用ToString()
。
MessageBox.Show
没有类似的重载 - 它必须带一个字符串。
答案 2 :(得分:0)
如果你查看参考代码或MSDN,你会发现Console.WriteLine()
有一个巨大的重载列表。
int
,double
,decimal
等版本以及object
参数的版本。所以,如果你写
object k = 999;
Console.WriteLine(k);
使用了重载Console.WriteLine(object o)
,内部自身调用k.ToString()
。
MessageBox.Show()
只有重载,需要string
作为要显示的文本的参数,并且object
k
无法隐式投放到{{1 }}。你必须自己打电话给string
。