C# 为什么逗号不能在WriteLine中包含字符串?
我想知道为什么在这样的场景中需要“+”:C# 为什么逗号不能在WriteLine中包含字符串?,c#,string,console.writeline,C#,String,Console.writeline,我想知道为什么在这样的场景中需要“+”: string name = "Rick"; Console.WriteLine("Hello, " + name); string name = "Rick"; Console.WriteLine("Hello, " , name); 我的印象是,“+”需要包含另一种类型的变量,而字符串可以不包含。这是不对的吗 此外,如果是这种情况,那么为什么它只是跳过变量,而在这种情况下不返回错误: string name = "Rick"; Console.Wr
string name = "Rick";
Console.WriteLine("Hello, " + name);
string name = "Rick";
Console.WriteLine("Hello, " , name);
我的印象是,“+”需要包含另一种类型的变量,而字符串可以不包含。这是不对的吗
此外,如果是这种情况,那么为什么它只是跳过变量,而在这种情况下不返回错误:
string name = "Rick";
Console.WriteLine("Hello, " + name);
string name = "Rick";
Console.WriteLine("Hello, " , name);
谢谢。C#使用运算符
+
连接字符串。因此,一个字符串添加到另一个字符串,创建包含第一个和第二个字符串的第三个字符串。逗号不连接字符串,逗号分隔参数。就编译器而言,第二个版本正在尝试传递第二个参数,WriteLine
方法不会重载该参数。对于这一点,您真正拥有的选项如下
Console.WriteLine("Hello, " + name);
Console.WriteLine($"Hello, {name}");
Console.WriteLine(String.Format("Hello, {0}", name));
第一个例子:
string name = "Rick"; //string variable
Console.WriteLine("Hello, " + name);
+
运算符用于连接字符串变量name
的值和字符串文本“Hello”,
结果输出将是Hello,Rick
有关更多信息,请参阅:
第二个例子:
string name = "Rick";
Console.WriteLine("Hello, " , name);
Console.WriteLine("Hello, " , name);
匹配重载
它需要使用格式化程序{0}
,因为格式化程序不存在,第二个参数对象
(在变量名称
中)不会发生任何事情。正确的版本应写为:
string name=“Rick”;
WriteLine(“Hello,{0}”,name)代码>
对象被强制转换为字符串,并创建一个新字符串,其值为name,替换{0}
值。
写入屏幕的结果输出将是:Hello,Rick
有关更多信息,我建议您查看以下内容:
你弄糊涂了。在您的第一个示例中:
Console.WriteLine("Hello, " + name);
这两个字符串被连接起来,结果作为参数传递给控制台.WriteLine
方法
第二个例子:
string name = "Rick";
Console.WriteLine("Hello, " , name);
Console.WriteLine("Hello, " , name);
实际上是调用,它接受字符串和对象。Console.WriteLine(“Hello,{0}”,name)WriteLine()
确实有一个适当的重载,调用Format()
是不必要的,你是对的,尽管OP似乎不确定字符串连接,因此可能值得将其保留,以防他不知道它的存在:)谢谢。我很困惑,因为我记得前面使用了您的第三个示例,但忘记了所需的{#}。