我有一个简单的程序,我可以在其中输入姓名,一旦按下 Enter 键,我就会得到输入的姓名。
var names = new List<string>();
while (true)
{
Console.WriteLine("enter name");
var input = Console.ReadLine();
if (String.IsNullOrEmpty(input))
break;
names.Add(input);
}
if (names.Count == 2)
{
Console.WriteLine(names[0], names[1] + "likes your post");
}
else if (names.Count > 2 )
{
var number = names.Count;
Console.WriteLine(names[0], names[1], number + "likes your post");
}
else if (names.Count == 1)
{
Console.WriteLine(names[0] + "likes your post");
}
else
{
Console.WriteLine("nobody likes your post");
}
Run Code Online (Sandbox Code Playgroud)
但是,我一直只返回名字,甚至不返回“喜欢你的帖子”部分。我试图调试它,我总是在列表中看到正确数量的项目,但仍然是错误的。
你能指出这个问题吗?
像这样尝试:
Console.WriteLine(names[0] + names[1] + "likes your post");
Run Code Online (Sandbox Code Playgroud)
解释:
按照您之前的方式,您(无意中)指定了一个格式字符串(例如names[0]),这不是您想要的。
你有过:
Console.WriteLine(names[0], names[1] + "likes your post");
Run Code Online (Sandbox Code Playgroud)
所以在上面的代码中,names[0]是格式字符串,names[1] + "likes your post"是格式字符串中使用的参数。但是names[0]没有任何占位符值(例如{0}, {1},等)所以没有什么会被替换到格式字符串中。所以结果是它会names[0]自己打印。
这是一个更具体的例子:
string value1 = "Val1";
string value2 = "Val2";
string value3 = "Val3";
Console.WriteLine("{0}, {1}, {2}", value1, value2, value3);
Run Code Online (Sandbox Code Playgroud)
在"{0}, {1}, {2}"是格式字符串,和所述{0}装置,这是“与格式字符串之后的第一个参数替换该值”value1在这个例子中。的{1}手段,这是“与格式字符串之后的第二个参数替换该值”value2在这个例子中。
通过修复,我们只是完全删除了格式字符串并为 提供了一个参数Console.WriteLine,因此它只是逐字打印文本。
| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |