C# 为什么在MsgBox中写入时不能使用{0}?
如果我想在C# 为什么在MsgBox中写入时不能使用{0}?,c#,C#,如果我想在控制台中显示一些东西,我通常这样写:控制台.write(“Hello{0}”,AnyNumber) 但是如果我使用Interaction.MsgBox并编写Interaction.MsgBox(“Hello{0},AnyNumber”)我收到一个错误,为什么 在编写时,我喜欢使用像{0}这样的占位符,而不是+(字符串连接),我认为这样写更容易 所以我的问题是:为什么我不能在MsgBox中使用占位符,还有其他方法使用它们吗 以下是我希望在MsgBox中使用它的示例: static voi
控制台中显示一些东西,我通常这样写:控制台.write(“Hello{0}”,AnyNumber)代码>
但是如果我使用Interaction.MsgBox
并编写Interaction.MsgBox(“Hello{0},AnyNumber”)代码>我收到一个错误,为什么
在编写时,我喜欢使用像{0}
这样的占位符,而不是+
(字符串连接),我认为这样写更容易
所以我的问题是:为什么我不能在MsgBox中使用占位符,还有其他方法使用它们吗
以下是我希望在MsgBox中使用它的示例:
static void multiplikation(int tal1, int tal2)
{
if (tal1*tal2 == 100)
{
Interaction.MsgBox("Hello!\nResult:\n" + (tal1 * tal2));
}
else
{
Interaction.MsgBox("Resultat:\n" + (tal1 * tal2));
}
}
static void addition(int tal1, int tal2)
{
if (tal1 + tal2 == 100)
{
Console.Write("Hello!\nResult:{0}\n", (tal1 + tal2));
}
else
{
Console.Write("Resultat:{0}\n", (tal1 + tal2));
}
}
Interaction.MsgBox
接收字符串作为其第一个参数。如果要格式化字符串,必须自己格式化,并将格式化后的字符串传递给Interaction.MsgBox
:
Interaction.MsgBox(string.Format("Hello!\nResult:{0}\n", (tal1 + tal2)));
另一方面,Console.Write
使用重载编写,允许在控制台内执行格式化。Write
交互。MsgBox
接收字符串作为其第一个参数。如果要格式化字符串,必须自己格式化,并将格式化后的字符串传递给Interaction.MsgBox
:
Interaction.MsgBox(string.Format("Hello!\nResult:{0}\n", (tal1 + tal2)));
另一方面,,Console.Write
使用重载编写,允许在控制台内执行格式化。Write
您可以使用string format方法您可以使用string format方法控制台。WriteLine
具有支持string.format
类型实现的重载
正如评论中指出的,您需要使用string.Format()
来复制交互的行为。MsgBox
控制台。WriteLine
具有支持string.Format
类型实现的重载
正如评论中指出的,您需要使用string.Format()
为交互复制该行为。MsgBox
这是因为与控制台.Write
,交互不同,交互。MsgBox
对string.Format
一无所知:它只是按原样显示字符串
由于C#version 6,有一种舒适的方式:
Interaction.MsgBox($"Result:\n {tal1 * tal2}");
“$”告诉编译器将{tal1*tal2}
视为一个表达式,并将结果插入字符串中。有关这种所谓的字符串插值的更多详细信息:
使用字符串插值,大括号{}
中的表达式可以
也需要进行评估。结果将插入到相应的
字符串中的位置。例如,要计算
foo
和bar
并将其插入,在卷发中使用Math.Max
支撑:
这可以按如下方式使用:
var tal1=1; var tal2=2;
MsgBox("Hello!\nResult:{0}\n", (tal1 + tal2));
注意:此解决方案不仅支持{0}
,而且还支持{1}、{2}、
,因为我使用了params数组。因此,以下措施也在发挥作用:
MsgBox("Calculation: {0} + {1} = {2}", tal1, tal2, (tal1+tal2));
输出计算:1+2=3
您可以阅读更多有关Interaction.MsgBox
方法、如何更改messagebox的样式(例如,如何显示Yes/No/Cancel按钮以及返回的MsgBoxResult
值)的信息,以便根据需要对其进行调整
这是完整的程序,您可以在或Visual Studio中运行它:
static void Main(string[] args)
{
var tal1=1; var tal2=2;
MsgBox("Hello!\nResult:{0}\n", (tal1 + tal2));
MsgBox("Calculation: {0} + {1} = {2}", tal1, tal2, (tal1+tal2));
}
public static MsgBoxResult MsgBox(string msg, params object[] p)
{
var fmt=string.Format(msg, p);
var msgStyle= Microsoft.VisualBasic.MsgBoxStyle.OkOnly;
return Interaction.MsgBox(fmt, msgStyle, "Information");
}
不要忘记添加对Microsoft.VisualBasic.dll
的引用,使用命名空间Microsoft.VisualBasic
,以运行此示例
如果您使用的是LinqPad,请右键单击,选择“查询属性…”,然后在“其他引用”中添加dll,并在“其他命名空间导入”中添加命名空间。这是因为与控制台.Write不同,Interaction.Msgbox
不知道有关string.Format
的任何信息:它只是按原样显示字符串
由于C#version 6,有一种舒适的方式:
Interaction.MsgBox($"Result:\n {tal1 * tal2}");
“$”告诉编译器将{tal1*tal2}
视为一个表达式,并将结果插入字符串中。有关这种所谓的字符串插值的更多详细信息:
使用字符串插值,大括号{}
中的表达式可以
也需要进行评估。结果将插入到相应的
字符串中的位置。例如,要计算
foo
和bar
并将其插入,在卷发中使用Math.Max
支撑:
这可以按如下方式使用:
var tal1=1; var tal2=2;
MsgBox("Hello!\nResult:{0}\n", (tal1 + tal2));
注意:此解决方案不仅支持{0}
,而且还支持{1}、{2}、
,因为我使用了params数组。因此,以下措施也在发挥作用:
MsgBox("Calculation: {0} + {1} = {2}", tal1, tal2, (tal1+tal2));
输出计算:1+2=3
您可以阅读更多有关Interaction.MsgBox
方法、如何更改messagebox的样式(例如,如何显示Yes/No/Cancel按钮以及返回的MsgBoxResult
值)的信息,以便根据需要对其进行调整
这是完整的程序,您可以在或Visual Studio中运行它:
static void Main(string[] args)
{
var tal1=1; var tal2=2;
MsgBox("Hello!\nResult:{0}\n", (tal1 + tal2));
MsgBox("Calculation: {0} + {1} = {2}", tal1, tal2, (tal1+tal2));
}
public static MsgBoxResult MsgBox(string msg, params object[] p)
{
var fmt=string.Format(msg, p);
var msgStyle= Microsoft.VisualBasic.MsgBoxStyle.OkOnly;
return Interaction.MsgBox(fmt, msgStyle, "Information");
}
不要忘记添加对Microsoft.VisualBasic.dll
的引用,使用命名空间Microsoft.VisualBasic
,以运行此示例
如果您使用的是LinqPad,请右键单击,选择“查询属性…”,然后在“其他引用”中添加dll,在“其他命名空间导入”中添加命名空间;使用@MichaelB所说的String.Format,或者添加您自己的扩展方法,比如使用String的MsgBoxf。Format@Kenny:我提供了这样的解决方案。使用String.Format(“Hello{0}”,“user”);使用@MichaelB所说的String.Format,或者添加您自己的扩展方法,比如使用String的MsgBoxf。Format@Kenny当前位置我已经提供了这样的解决方案。