考虑以下代码:
int total = 0;
using(var inFile = new StreamReader("text.txt"))
{
string inValue = "";
while ((inValue = inFile.ReadLine()) != null)
{
if(Int32.TryParse(inValue, out number))
{
total += number;
Console.WriteLine("{0}", number);
}
else
Console.WriteLine("{0} - not a number", inValue);
}
}
Console.WriteLine("The sum is {0}", total);
如果我MessageBox.Show("{0}", number);
,它会给我一个错误。为什么这样,我该如何解决?
答案 0 :(得分:1)
看起来你肯定在编写一个控制台应用程序,然后Messagebox就不可能了。但是,如果您实际上正在编写Windows Forms应用程序,那么答案就是:
Messagebox没有“内置”格式化程序,如Console.WriteLine
。如果要格式化字符串,必须使用String.Format
:
MessageBox.Show(String.Format("{0}", number));
可替换地:
MessageBox.Show(number.ToString());
答案 1 :(得分:1)
The MSDN非常明确地指出,MessageBox.Show
确实需要两个字符串。但这两个不是格式和参数,而是文本和标题。如果要格式化文本,请在调用方法之前使用string.Format格式化字符串。您也可以使用其他重载之一,但无论您使用哪种重载,都需要进行自己的格式化。
命名空间: System.Windows.Forms
汇编: System.Windows.Forms(在System.Windows.Forms.dll中)
这意味着您需要此命名空间,并且需要在引用中使用dll。默认情况下,两者都不会在控制台应用程序中发生。
答案 2 :(得分:0)
MessageBox
无法在控制台应用程序中使用。
答案 3 :(得分:0)
问题在于
行 MessageBox.Show("{0}", number);
您无法以调用Console.writeline()的方式调用MessageBox.show()。 MessageBox.show中的第二个参数是MessageBox标题。试着写
MessageBox.Show(number)
或
MessageBox.Show("The sum is "+number);