为什么在MessageBox.show()中显式调用ToString()方法?
本文关键字:调用 ToString 方法 MessageBox show 为什么 | 更新日期: 2023-09-27 18:06:49
我收集到 MessageBox.show()
方法接受string参数,因此我们需要 ToString()
方法调用参数。
object k = 999;
MessageBox.Show(k.ToString());
但是当涉及到 Console.WriteLine()
时,它本身就足够聪明了。我的问题是为什么有差异?
如果你看一下http://referencesource.microsoft.com/#mscorlib/system/console.cs,8c83114cc3fd109d
,那么您将看到Console
类中有许多WriteLine
函数的重载,包括Console.WriteLine(Object value)
。这很方便。
MessageBox.Show
没有这些不同的重载,只接受字符串。
Console.WriteLine
有许多重载,其中一个重载取object
并调用ToString()
。
MessageBox.Show
没有类似的重载——它必须接受一个字符串。
如果你查看参考代码或MSDN,你会看到Console.WriteLine()
有一个巨大的过载列表。
有int
, double
, decimal
等版本…object
参数的版本。所以如果你写
object k = 999;
Console.WriteLine(k);
使用的是Console.WriteLine(object o)
重载,它内部调用k.ToString()
。
MessageBox.Show()
只有将string
作为文本显示参数的重载,object
k
不能隐式地强制转换为string
。所以你必须自己调用k.ToString()