在 Console.WriteLine 内传递值
Passing value inside Console.WriteLine
这是正在处理的一段代码
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Enter the number to find factorial : ");
var fac = Convert.ToInt32(Console.ReadLine());
var res = 1;
for (var i = fac; i >= 1; i--)
{
res = res * i;
}
Console.WriteLine("Count of " + fac + " is : " + res);
}
}
我想在结果中添加用户输入的输入 fac
。这里我使用 Console.WriteLine("Count of " + fac + " is : " + res);
在我的控制台中显示输出。
我试过
Console.WriteLine("Count of {0} is : {1} ", fac, res);
有没有更好的方法来做这个或者这个就可以了..
另一个解决方案是使用 string interpolation:
Console.WriteLine($"Count of {fac} is : {res}");
Console.WriteLine("Count of {0} is : {1} ", fac, res);
是一个支持格式字符串的 overload of Console.WriteLine
。
如果您需要用值(例如 fac、res)填充字符串模板(例如 "Count of {0} is : {1} "),您还可以使用字符串插值 (.net 4.6) 或 String.Format
method 重载,这也使得更容易用重复值填充模板(例如 String.Format("{0}-{1} {0}-{1} {2}", 1,2,3);
)
string s = String.Format("Count of {0} is : {1} ", fac, res);
Console.WriteLine(s);
我会避免使用加法运算符,因为它会导致意外的结果;例如
int a = 1;
int b = 2;
Console.WriteLine("hello world " + a + b);
//hello world 12
Console.WriteLine(a + b + " hello world");
//3 hello world
这两行看起来好像会产生相似的输出,只有一行以 hello world
开头,另一行以 hello world
结尾。但是,字符串的数字部分在第一个示例中为 12 ("1" + "2"
),而在第二个示例中为 3 (1 + 2
).
最好,因为它非常清晰可读。
您还可以使用此技术应用格式;即
Console.WriteLine("hello world {a:0.00} {b}");
//hello world 1.00 2
注意:应用格式的选项也可用于数字占位符:
Console.WriteLine("hello world {0} {1:0.00}", a, b);
//hello world 1 2.00
如果您需要在定义变量之前定义格式,那么使用数字占位符而不是插值是有意义的。例如
public class MyClass
{
const string MyStringFormat = "hello {0} world {1}";
public static string WriteMessage(int a, int b)
{
Console.WriteLine(MyStringFormat, a, b);
}
}
这是正在处理的一段代码
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Enter the number to find factorial : ");
var fac = Convert.ToInt32(Console.ReadLine());
var res = 1;
for (var i = fac; i >= 1; i--)
{
res = res * i;
}
Console.WriteLine("Count of " + fac + " is : " + res);
}
}
我想在结果中添加用户输入的输入 fac
。这里我使用 Console.WriteLine("Count of " + fac + " is : " + res);
在我的控制台中显示输出。
我试过
Console.WriteLine("Count of {0} is : {1} ", fac, res);
有没有更好的方法来做这个或者这个就可以了..
另一个解决方案是使用 string interpolation:
Console.WriteLine($"Count of {fac} is : {res}");
Console.WriteLine("Count of {0} is : {1} ", fac, res);
是一个支持格式字符串的 overload of Console.WriteLine
。
如果您需要用值(例如 fac、res)填充字符串模板(例如 "Count of {0} is : {1} "),您还可以使用字符串插值 (.net 4.6) 或 String.Format
method 重载,这也使得更容易用重复值填充模板(例如 String.Format("{0}-{1} {0}-{1} {2}", 1,2,3);
)
string s = String.Format("Count of {0} is : {1} ", fac, res);
Console.WriteLine(s);
我会避免使用加法运算符,因为它会导致意外的结果;例如
int a = 1;
int b = 2;
Console.WriteLine("hello world " + a + b);
//hello world 12
Console.WriteLine(a + b + " hello world");
//3 hello world
这两行看起来好像会产生相似的输出,只有一行以 hello world
开头,另一行以 hello world
结尾。但是,字符串的数字部分在第一个示例中为 12 ("1" + "2"
),而在第二个示例中为 3 (1 + 2
).
Console.WriteLine("hello world {a:0.00} {b}");
//hello world 1.00 2
注意:应用格式的选项也可用于数字占位符:
Console.WriteLine("hello world {0} {1:0.00}", a, b);
//hello world 1 2.00
如果您需要在定义变量之前定义格式,那么使用数字占位符而不是插值是有意义的。例如
public class MyClass
{
const string MyStringFormat = "hello {0} world {1}";
public static string WriteMessage(int a, int b)
{
Console.WriteLine(MyStringFormat, a, b);
}
}