24.总结
24.1 知识点

学习的主要内容

总结讲什么

为什么要讲练结合

如何培养良好的学习习惯

如何快速的提升编程能力

24.2 核心要点速览
输入输出操作
| API | 说明 |
|---|---|
Console.WriteLine |
输出文本并换行,支持占位符,示例:Console.WriteLine("{0}", value)。 |
Console.Write |
输出文本但不换行。 |
Console.ReadLine |
读取一行用户输入,以回车结束输入,返回字符串类型结果。 |
Console.ReadKey |
读取单个按键,返回 ConsoleKeyInfo 对象,可用于捕获键盘事件,按下任意键即认为输入结束。 |
代码分组
#region 分组名称
// 分组代码
#endregion
通过 #region 和 #endregion 可将代码分组,提高代码的可读性与逻辑性,此为编辑器提供的预处理指令,编译时会被忽略。
基础变量类型
| 分类 | 类型 | 默认值 |
|---|---|---|
| 有符号整型 | sbyte(8 位)、short(16 位)、int(32 位)、long(64 位) |
0 |
| 无符号整型 | byte(8 位)、ushort(16 位)、uint(32 位)、ulong(64 位) |
0 |
| 浮点数 | float(单精度)、double(双精度)、decimal(高精度) |
0.0 |
| 布尔/字符 | bool(true/false)、char(单字符,如 'A') |
false/'\0' |
| 字符串 | string(引用类型,不可变) |
null |
获取变量类型所占内存空间
可使用 sizeof(变量类型) 方法获取变量类型在内存中所占的字节数。例如:
int intSize = sizeof(int);
Console.WriteLine($"int 类型所占字节数: {intSize}");
常量
- 声明:使用
const关键字,语法为const 类型 名称 = 值;,示例:const float PI = 3.14f;。 - 特性:常量是编译时常量,声明时必须初始化,且在程序运行过程中不可修改。
转义字符
| 符号 | 含义 | 应用场景 |
|---|---|---|
\' |
单引号 | 当字符串中需要包含单引号时使用,如 'Hello'。 |
\" |
双引号 | 当字符串中需要包含双引号时使用,如 "World"。 |
\n |
换行符 | 用于实现文本换行,示例:str = "Line1\nLine2"。 |
\\ |
反斜杠 | 在表示文件路径等需要使用反斜杠的场景中使用,如 C:\\Folder\\File.txt。 |
\t |
制表符(Tab) | 用于文本对齐,示例:Name\tAge。 |
\b |
退格符 | 使光标回退一格,示例:12\b3 输出 13。 |
\a |
警报音 | 触发系统提示音,使用时需谨慎。 |
类型转换
隐式转换规则
遵循大范围容纳小范围的原则:double → float → 整数(无符号/有符号) → char;decimal → 整数 → char。string 和 bool 类型不参与隐式转换。
显式转换
| 方法 | 说明 |
|---|---|
(类型) 值 |
括号强转,示例:(int)3.14,需注意可能会出现精度丢失或范围溢出问题。 |
变量类型.Parse("字符串") |
将字符串转换为对应的变量类型,若转换失败会抛出异常。 |
Convert.To目标类型(变量或常量) |
可将任意类型转换为目标类型。 |
ToString() |
将对象转换为字符串类型,可通过重写来自定义转换逻辑。 |
异常捕获
| 块 | 说明 | 是否必需 |
|---|---|---|
try |
包含可能会抛出异常的代码。 | 是 |
catch |
捕获异常,可通过指定 Exception e 来获取详细的错误信息,至少需要一个 catch 块。 |
是 |
finally |
无论是否发生异常,该块中的代码最终都会执行,常用于释放资源。 | 否 |
| 示例代码: |
try
{
// 可能抛出异常的代码
}
catch (Exception e)
{
// 处理异常
Console.WriteLine($"异常信息: {e.Message}");
}
finally
{
// 清理资源
}
运算符
| 类型 | 运算符 | 说明 | 优先级(从高到低) |
|---|---|---|---|
| 算术运算符 | + - * / % |
分别用于加减乘除和取余运算,示例:7 % 3 = 1,整数除法 5 / 2 = 2。 |
* / % > + - |
| 关系运算符 | > < >= <= == != |
比较操作,结果为 bool 类型,示例:3 > 2 结果为 true,"a" != "b" 结果为 true。 |
高于逻辑运算符(除 ! 外) |
| 逻辑运算符 | ! && || |
逻辑非、与、或运算,具有短路特性:&& 运算符若左边为 false 则右边不执行;|| 运算符若左边为 true 则右边不执行。 |
! > && > || |
| 位运算符 | & | ^ ~ << >> |
对数值进行位运算,示例:5 << 1 = 10,5 & 3 = 1,~5 = -6。 |
高于逻辑运算符(仅 ! 例外) |
| 三目运算符 | 条件 ? 表达式1 : 表达式2 |
根据 bool 条件判断,若条件为 true 则返回表达式 1,否则返回表达式 2,示例:a > b ? a : b。 |
低于赋值运算符 |
字符串拼接
| 类型 | 方法/语法 | 说明 | 示例 |
|---|---|---|---|
| 运算符拼接 | + / += |
直接使用 + 进行字符串拼接,支持将非字符串类型(如数字、布尔值)自动转换为字符串。复合运算符 += 等价于 str = str + value。 |
string str = "Hello" + "World"; str += 123; 结果为 "HelloWorld123"。 |
| 格式化拼接 | string.Format("模板", 参数1, 参数2) |
使用 {数字} 作为占位符定义模板,按顺序填充参数,支持类型自动转换。 |
string result = string.Format("我是{0},今年{1}岁", "小明", 18); 结果为 "我是小明,今年18岁"。 |
| 控制台拼接 | Console.WriteLine("模板", 参数1, 参数2) |
本质是 WriteLine 方法的重载,语法与 string.Format 相同,直接输出拼接结果。注意:参数数量必须大于等于占位符数量,否则会报错。 |
Console.WriteLine("A{0}B{1}", true, 123); 输出 "ATrueB123"。 |
流程控制
条件分支
| 语句 | 语法 | 特点 |
|---|---|---|
if |
if (条件) { 代码块 } |
单分支结构,当条件为 true 时执行代码块。 |
if...else |
if (条件) { 代码块1 } else { 代码块2 } |
双分支结构,若条件为 false 则执行 else 后的代码块。 |
switch |
switch (变量) { case 常量: 代码块; break; } |
多分支结构,每个 case 语句后需要使用 break 语句跳出(支持贯穿)。 |
循环
| 语句 | 语法 | 执行顺序 |
|---|---|---|
while |
while (条件) { 循环体 } |
先判断条件,条件为 true 时执行循环体,可能一次都不执行。 |
do...while |
do { 循环体 } while (条件); |
先执行一次循环体,再判断条件,至少执行一次循环体。 |
for |
for (初始; 条件; 增量) { 循环体 } |
适用于已知循环次数的场景,按初始、条件判断、执行循环体、增量的顺序执行。 |
控制关键字
| 关键字 | 作用 | 适用场景 |
|---|---|---|
break |
跳出当前循环或 switch 语句 |
用于提前终止循环或 switch 流程。 |
continue |
跳过本次循环的后续代码,直接进入下一次循环 | 忽略本次循环剩余代码,开始下一次循环。 |
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com