所以我正在学习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();
答案 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}
开始,因此很容易知道您要修改哪个值。
重要提示:为了让示例更易于理解,但index
或placeholder
比较是为了理解,但它们是基于以下方式填充所述位置的参数实施的顺序。
您的代码示例:
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 - 车