为什么我不能写MessageBox.Show("asdfasdf {0}",i);?

Epi*_*ody 5 c# windows

int i = 85; 
Console.WriteLine("My intelligence quotient is {0}", i);  // Kosher
MessageBox.Show("My intelligence quotient is {0}", i); // Not Kosher
Run Code Online (Sandbox Code Playgroud)

我发现这最令人痛苦的是让人衰弱.一个工作,而不是另一个?这种行为不协调的根源是什么?我想的越多,我的想象就越少,而且经常无法理解会变成自我厌恶.

Sha*_*ard 9

Show()方法没有适当的过载.

它是为了Console.WriteLine方便而添加的,但它不是每个.NET方法的组成部分.

要达到同样的效果,请string.Format手动使用:

MessageBox.Show(string.Format("asdfasdf{0}", i)); // Kosher
Run Code Online (Sandbox Code Playgroud)


Mer*_*ham 3

Console.Writeline有这些重载:

特别是,接受格式字符串和参数数组的重载

这是另一种非常相似的方法:

我不知道为什么MessageBox.Show没有重载。我猜这是因为该方法已经有很多其他重载。

但你可以通过添加以下内容来获得类似的效果string.Format

public void ShowMessageBox(string format, params object[] args)
{
    MessageBox.Show(string.Format(format, args));
}

// ...

ShowMessageBox("You entered: {0}", someValue);
Run Code Online (Sandbox Code Playgroud)