($"{a} + {b} = {plus}") 和 ("{0} + {1} = {2}", num1, num2, num1+num2) 有什么区别?

what is the difference between ($"{a} + {b} = {plus}") and ("{0} + {1} = {2}", num1, num2, num1+num2)?

我是 C# 新手。我正在解决一些你可能会说只是为了练习的基本问题或挑战。我尝试先自己解决它,然后检查源的输出。我查看 YouTube 上的教程来学习。这不是什么大问题,但我没有想出一个名称来搜索 Console.WriteLine 方法中使用的这种 表示格式

主要来源Link:https://www.w3resource.com/csharp-exercises/basic/index.php

问题图片:7.no Exercise

我自己的代码作为解决方案:

int a; int b; float d; float e; //variables

int plus; int minus; int mult; float div; float mod; //operators  

Console.WriteLine("Input the first number:");
a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Input the second number:");
b = Convert.ToInt32(Console.ReadLine());

plus = a + b ;
minus = a - b ; 
mult = a * b ;
div = a / b ;
mod = a % b ;

Console.WriteLine("\n\n\n");

Console.WriteLine($"{a} + {b} = {plus}");
Console.WriteLine($"{a} - {b} = {minus}");
Console.WriteLine($"{a} x {b} = {mult}");
Console.WriteLine($"{a} / {b} = {div}");
Console.WriteLine($"{a} mod {b} = {mod}");

Console.WriteLine("\n\nPress any Key to Exit.");
Console.ReadKey();

已解决来自源代码的示例代码:

Console.Write("Enter a number: ");
int num1= Convert.ToInt32(Console.ReadLine());

Console.Write("Enter another number: ");
int num2= Convert.ToInt32(Console.ReadLine());

Console.WriteLine("{0} + {1} = {2}", num1, num2, num1+num2);
Console.WriteLine("{0} - {1} = {2}", num1, num2, num1-num2);
Console.WriteLine("{0} x {1} = {2}", num1, num2, num1*num2);
Console.WriteLine("{0} / {1} = {2}", num1, num2, num1/num2);
Console.WriteLine("{0} mod {1} = {2}", num1, num2, num1%num2);

我理解我的意思,但我对源代码有点陌生,第二个括号中 0,1,2 的使用与这些变量纠缠在一起。有人能告诉我这两种输出格式的详细信息吗?

你所做的就是所谓的字符串插值。示例中显示的是复合格式。您可以在 ms-docs.

找到有关这些主题的更多信息

使用字符串插值,您可以在字符串的“”之前放置一个 $ 符号,以便编译器知道如何处理该字符串。然后你只需在你的字符串中使用 {} 并且这些 {} 中的任何内容都是 运行 就像任何其他代码一样。一个例子是:

string myName = "Captain Coder"
int myAge = 21;
Console.WriteLine($"They know me as {myName} for {myAge} years now.");

输出:他们认识我这个 Captain Coder 已经 21 年了。

使用复合格式,您只需将参数索引放在 {} 之间,以便在给定位置使用。示例:

string myName = "Captain Coder"
int myAge = 21;
Console.WriteLine("They know me as {0} for {1} years now.", myName, myAge);