C#打印输出多个参数与格式化字符串

打印输出多个参数

例如:

static void Main(string[] args)
{
    Console.WriteLine("A:{0},a:{1}",65,97);
    Console.ReadLine();
}

运行结果:

A:65,a:97

WriteLine() 函数有多个参数时,输出第一个参数中的内容,而第二个参数中的内容替换掉第一个参数中对应位置的占位符一起输出。

如果第一个参数没有留占位符,那么第二个参数内容不输出,例如:

Console.WriteLine("A:,a:",65,97);

运行结果:

A:,a:

占位符从零开始计数,且占位符中的数字不能大于第二个参数的个数减一(要求占位符必须有可替换的值).

占位符数字与第二个参数字符位置一一对应:

static void Main(string[] args)
{
    Console.WriteLine("A:{1},a:{0}",65,97);
    Console.ReadLine();
}

运行结果:

A:97,a:65

格式化输出字符串

C# 中有多种方法可以规范地格式化字符串,主要有以下几种:

1、使用 string.Format() 方法:

这是比较传统的一种方法,使用占位符 {0}​、 {1}​ 等来表示需要替换的参数,参数顺序与 string.Format()​ 方法的参数顺序对应。

string name = "清风明月";
int age = 18;
string message = string.Format("我的名字是 {0},今年 {1} 岁。", name, age);
Console.WriteLine(message); // 输出:我的名字是 清风明月,今年 18 岁。

这种方法的缺点是,如果参数很多,容易出错,而且可读性较差。

2、 使用插值字符串(Interpolated Strings):

这是 C# 6.0 引入的一种新特性,使用 $​ 符号开头,并在字符串中直接使用 {}​ 包裹变量名。这是 目前最推荐的 字符串格式化方法,因为它简洁、易读且不易出错。

string name = "清风明月";
int age = 18;
string message = $"我的名字是 {name},今年 {age} 岁。";
Console.WriteLine(message); // 输出:我的名字是 清风明月,今年 18 岁。

可以进行更复杂的格式化,例如:

double price = 123.4567;
string formattedPrice = $"价格:{price:C}"; // 使用货币格式
Console.WriteLine(formattedPrice); // 输出:价格:¥123.46  (根据系统区域设置而定)

DateTime now = DateTime.Now;
string formattedDate = $"当前时间:{now:yyyy-MM-dd HH:mm:ss}";
Console.WriteLine(formattedDate); // 输出:当前时间:2025-02-11 10:30:00 (根据当前时间而定)

3、 使用 StringBuilder 类:

当需要进行大量的字符串拼接操作时,使用 StringBuilder​ 类可以提高效率,避免频繁创建字符串对象。

StringBuilder sb = new StringBuilder();
sb.Append("我的名字是 ");
sb.Append("清风明月");
sb.Append(",今年 ");
sb.Append(18);
sb.Append(" 岁。");
string message = sb.ToString();
Console.WriteLine(message); // 输出:我的名字是 清风明月,今年 18 岁。

4、选择哪种方法?

  • 对于简单的字符串格式化,插值字符串是最佳选择。因为它简洁、易读且效率高。
  • 对于复杂的格式化,或者需要进行大量的字符串操作,可以使用 string.Format()​ 方法或 StringBuilder​ 类。 StringBuilder​ 更适用于需要多次修改和拼接字符串的情况。