输入与输出
Console.Write 与 Console.WriteLine
Console.Write 输出内容后不换行,Console.WriteLine 输出内容后自动换行。
示例
CSHARP
Console.Write("Hello");
Console.Write(" ");
Console.WriteLine("World");
Console.WriteLine("第二行");
TEXT
Hello World
第二行
占位符格式化输出
使用 {0}、{1} 等占位符在字符串中插入变量值,后面按顺序列出对应参数。
示例
CSHARP
string name = "张三";
int age = 25;
Console.WriteLine("姓名:{0},年龄:{1}", name, age);
Console.WriteLine("{0}今年{1}岁,{0}是程序员", name, age);
TEXT
姓名:张三,年龄:25
张三今年25岁,张三是程序员
字符串插值
在字符串前加 $ 前缀,直接在 {} 中写入变量或表达式,比占位符更直观。
示例
CSHARP
string name = "李四";
int age = 30;
Console.WriteLine($"姓名:{name},年龄:{age}");
int x = 10, y = 20;
Console.WriteLine($"结果:{x + y}");
TEXT
姓名:李四,年龄:30
结果:30
对齐控制
在占位符或插值中用逗号指定宽度:正数右对齐,负数左对齐。例如 {0,10} 右对齐宽度10,{0,-10} 左对齐宽度10。
示例
CSHARP
Console.WriteLine("|{0,10}|", "右对齐");
Console.WriteLine("|{0,-10}|", "左对齐");
Console.WriteLine($"|{"插值右",10}|");
Console.WriteLine($"|{"插值左",-10}|");
TEXT
| 右对齐|
|左对齐 |
| 插值右|
|插值左 |
精度控制
使用格式说明符控制数值精度:F2 保留2位小数,F4 保留4位小数等。
示例
CSHARP
double pi = 3.14159265;
Console.WriteLine("{0:F2}", pi);
Console.WriteLine("{0:F4}", pi);
Console.WriteLine($"{pi:F3}");
TEXT
3.14
3.1416
3.142
常用格式说明符
| 说明符 | 名称 | 说明 |
|---|---|---|
C |
货币 | 添加货币符号 |
D |
十进制 | 整数补零 |
F |
定点 | 固定小数位 |
P |
百分比 | 乘100加%号 |
X |
十六进制 | 转十六进制 |
示例
CSHARP
int num = 255;
double money = 1234.56;
double ratio = 0.856;
Console.WriteLine($"货币:{money:C}");
Console.WriteLine($"十进制:{num:D6}");
Console.WriteLine($"定点:{money:F1}");
Console.WriteLine($"百分比:{ratio:P1}");
Console.WriteLine($"十六进制:{num:X}");
TEXT
货币:¤1,234.56
十进制:000255
定点:1234.6
百分比:85.6%
十六进制:FF
Console.ReadLine 读取输入
Console.ReadLine() 从控制台读取一行文本,返回值为 string 类型。读取到文件末尾时返回 null。
示例
CSHARP
Console.WriteLine("请输入你的名字:");
string input = Console.ReadLine();
Console.WriteLine($"你好,{input}!");
TEXT
请输入你的名字:
王五
你好,王五!
数字输入转换
Console.ReadLine() 返回字符串,需要用 int.Parse、int.TryParse 或 Convert.ToInt32 转换为数字。
示例
CSHARP
string str1 = "42";
int num1 = int.Parse(str1);
int num2 = Convert.ToInt32(str1);
string str2 = "abc";
if (int.TryParse(str2, out int result))
{
Console.WriteLine($"转换成功:{result}");
}
else
{
Console.WriteLine("转换失败,输入不是有效整数");
}
Console.WriteLine($"Parse结果:{num1}");
Console.WriteLine($"Convert结果:{num2}");
TEXT
转换失败,输入不是有效整数
Parse结果:42
Convert结果:42
Console.ReadKey 读取单键
Console.ReadKey() 读取单个按键,无需按回车。返回 ConsoleKeyInfo 对象,可通过 KeyChar 获取字符。
示例
CSHARP
Console.WriteLine("按任意键继续...");
ConsoleKeyInfo key = Console.ReadKey();
Console.WriteLine();
Console.WriteLine($"你按下了:{key.KeyChar}");
TEXT
按任意键继续...
A
你按下了:A
插值中的表达式与格式化
字符串插值 {} 内可写表达式,也可同时使用格式说明符和对齐,语法为 {表达式,对齐宽度:格式说明符}。
示例
CSHARP
double price = 29.9;
int quantity = 3;
Console.WriteLine($"单价:{price:C},数量:{quantity},总价:{price * quantity:C}");
Console.WriteLine($"|{price,10:C}|");
int hex = 255;
Console.WriteLine($"十六进制:{hex:X4}");
TEXT
单价:¤29.90,数量:3,总价:¤89.70
| ¤29.90|
十六进制:00FF
格式化输出最佳实践
- 优先使用字符串插值
$"",代码更清晰易读 - 对用户输入始终使用
TryParse而非Parse,避免异常 - 输出表格数据时统一对齐宽度,保持整齐
- 货币金额使用
C格式符,百分比使用P格式符 - 复杂格式化可提取为方法,减少重复代码
- 需要暂停程序时使用
ReadKey,需要读取整行时使用ReadLine
示例
CSHARP
string[] names = { "苹果", "香蕉", "橘子" };
double[] prices = { 5.5, 3.2, 4.8 };
int[] stocks = { 120, 85, 200 };
Console.WriteLine($"{"商品",8}{"单价",8:C}{"库存",8}");
Console.WriteLine(new string('-', 24));
for (int i = 0; i < names.Length; i++)
{
Console.WriteLine($"{names[i],8}{prices[i],8:F2}{stocks[i],8}");
}
Console.WriteLine("\n请输入购买数量:");
if (int.TryParse(Console.ReadLine(), out int qty) && qty > 0)
{
double total = prices[0] * qty;
Console.WriteLine($"总价:{total:C}");
}
else
{
Console.WriteLine("输入无效,请输入正整数");
}
TEXT
商品 单价 库存
------------------------
苹果 5.50 120
香蕉 3.20 85
橘子 4.80 200
请输入购买数量:
5
总价:¤27.50
❓ 常见问题
Q int.Parse 和 int.TryParse 有什么区别?
A Parse 转换失败抛异常,TryParse 返回 bool 不抛异常,应优先使用 TryParse。
Q 字符串插值中如何输出大括号字面量?
A 用双大括号转义,
{{ 输出 {,}} 输出 }。Q Console.ReadLine 返回 null 的情况?
A 当输入流已到达末尾时返回 null,交互式控制台通常不会出现。
Q 货币符号为什么显示¤?
A ¤是区域无关的货币符号,设置系统区域或指定文化信息后可显示对应货币符号。
📖 小节
- Console.Write 不换行,WriteLine 换行
- 占位符
{0}和插值$"{var}"两种格式化方式 {0,10}右对齐,{0,-10}左对齐{0:F2}控制小数位数- 常用格式符:C货币、D十进制、F定点、P百分比、X十六进制
- ReadLine 读字符串,需 Parse/TryParse/Convert 转数字
- ReadKey 读单键无需回车
- 插值内可写表达式,支持对齐与格式组合
📝 作业
- 编写程序,用字符串插值输出姓名、年龄和身高的个人信息卡片,要求各字段对齐
- 编写一个简易计算器:读取两个整数和运算符,输出计算结果,使用
TryParse处理输入 - 编写程序,用表格形式输出5种商品的名称、单价(F2格式)和库存,列宽统一为10
- 编写程序,读取一个整数分别以十进制(D8)、十六进制(X)和百分比(P)格式输出
- 编写程序,使用
Console.ReadKey实现菜单选择,按1显示时间,按2退出



