C#字符串中的{index}表示法是什么?

时间:2015-03-18 18:21:38

标签: c#

所以我正在学习C#。浏览Tabors MSDN视频。我对为什么这个结果是什么感到困惑。我不明白{1}和{0}是什么,我不明白他是否试图减去它们。在我的脑海中,使用readline时应该出现的是“(不确定),2,汽车”。 userValue是2,因此消息不等于1,这使得它等于car。它只是点击,因为我正在打字。 {1}指的是消息,语句中的第二个变量,而{0}指的是第一个变量userValue。因此结果是“车 - 2”。我很确定我只想出来但有人可以证实。谢谢。

int userValue = 2;
string message = (userValue == 1) ? "boat" : "car";
Console.WriteLine("{1} - {0}", userValue, message);
Console.ReadLine();

4 个答案:

答案 0 :(得分:3)

他们使用{0}等的原因是索引或占位符,这很有用,因为没有上述代码,您最终会得到以下内容:

Console.WriteLine(userValue + " " + message);

所以,通过上述方法,您已经使用了连接。这将把你的两个值结合在一起,在String的情况下它被认为是 immutable ,这意味着每次你连接你的阻碍内存。所以如果你这样做:

string message = String.Empty;
message += userValue;
message += note;

+=这是一个事件,它会添加我们当前的值加上一个新值。需要注意的是,每个message =都会重新创建内存中的值,因此更大的数据可能会成为一个问题。

Console.WriteLine的内置函数与String.Format最相关。实质上这将允许我们执行以下操作:

var message = String.Format("{0} {1}", userValue, note);

因此,当您使用所述持有者时,它会像连接一样构建我们的输出,但是以更高性能和更简单的方式进行读取。由于您必须从{0}开始,因此很容易知道您要修改哪个值。

重要提示:为了让示例更易于理解,但indexplaceholder比较是为了理解,但它们是基于以下方式填充所述位置的参数实施的顺序。

您的代码示例:

var userValue = 2;
var message = String.Empty;

if(userValue == 1)
     message = "boat";
else { message = "car"; }

为了简单起见,我删除了你的三元组,因为你硬编码了你的语句永远不会测试的用户值,因为你将它设置为2。所以你有两个值,因为你可以表示if userValue == 1这样做,否则就给你的另一个变量分配消息。

当你这样做时:

Console.WriteLine("{0} - {1}", message, userValue);

您将这两个参数转换为string,但它不会进行任何减法,因为string不执行数学函数,因此最终输出为:

car - 2;

原因是,正如我前面所述,您的参数都充当占位符。因此,这两个参数的值将插入到String中。

希望这概述了它为你做得更好。

答案 1 :(得分:1)

那些看起来像"{0}"的字符串是由尾随变量填充的格式字符串参数。该数字表示从0开始使用的变量。

例如:

Console.WriteLine("{1} - {0}", userValue, message);
//prints "car - 2"

这是因为{0}userValue等于2.它的索引是0,因为它是格式字符串后面的列表中的第一个。然后{1}message,自userValue == 2以来发布的表达式为“car”。

答案 2 :(得分:0)

实际上,Console.WriteLine可以使用多于1个参数,其中一个是文本。从那以后,您可以在文本中引用{n}内的其他变量,其中n是参数的位置。所以,当他说Console.WriteLine("{1} - {0}", userValue, message);时,他实际上得到了"汽车 - 2"作为回报。

答案 3 :(得分:0)

  

{1}指的是消息,语句中的第二个变量,而{0}指的是第一个变量userValue。因此结果是“车 - 2”。我很确定我只是想出来但有人可以证实。

string message = (userValue == 1) ? "boat" : "car";
Console.WriteLine("{1} - {0}", userValue, message);

但是如果你改变尾随参数的位置,例如

Console.WriteLine("{0} - {1}", userValue, message);

或变量的地方,

Console.WriteLine("{1} - {0}", message, userValue);

你得到:

  

2 - 车