C#语言基础知识要点

1. 程序结构与编译机制

  • 基本构成:C# 程序由命名空间、类、方法、属性和语句块等组成。
  • 程序集 (Assembly).cs 源文件通过编译器编译成程序集(.exe.dll)。它是 .NET 的打包和部署单元。
  • 入口点 :应用程序必须包含一个 Main 方法或使用 顶级语句 作为执行入口。
  • dotnet 工具:用于管理、构建和运行 .NET 源代码的命令行工具。

2. 语法规范

  • 标识符:区分大小写。通常局部变量小写开头,方法和类大写开头。
  • 关键字 :大部分为保留字。若要使用关键字做标识符,需加 @ 前缀。
  • 注释 :支持单行 (//)、多行 (/*...*/) 和 XML 文档注释 (///)。

3. 类型系统

值类型 (Value Types)

  • 包含 :内置数值类型、boolcharstructenum
  • 特点 :直接存储数据值,赋值时会进行实例复制

引用类型 (Reference Types)

  • 包含classstring、数组、委托、接口。
  • 特点 :包含对象引用和对象本身,赋值时仅复制引用
  • 存储 :对象分配在堆 (Heap) 上,引用通常在栈 (Stack) 上。

类型转换

  • 隐式转换 :编译器确保转换安全且无信息丢失(如 intlong)。
  • 显式转换:可能导致信息丢失或失败,需使用强制转换符。

4. 数值与布尔类型

  • 整数 :包含有符号 (int, long 等) 和无符号 (uint, ulong 等) 类型。C# 9 引入了原生大小的 nintnuint
  • 实数floatdouble(用于科学计算,有舍入误差)和 decimal(高精度,用于金融)。
  • 溢出检查 :默认不检查(周而复始),可用 checked 运算符显式开启溢出检查。
  • 布尔类型bool (true/false),不可与数值类型直接转换。

5. 字符串与字符

  • char:表示 16 位 Unicode 字符。
  • string :不可变的字符序列,虽然是引用类型,但其相等运算遵循值语义
  • 特性
  • 原意字面量@"" 不处理转义字符。
  • 字符串插值$"" 允许在大括号中嵌入表达式。

6. 数组

  • 特性:元素存储在连续内存中,索引从 0 开始。

  • 索引与范围 (C# 8)

  • ^n:从末尾计算索引。

  • ..:切片操作(如 1..3)。

  • 多维数组 :分为矩形数组 (int[,]) 和锯齿数组 (数组的数组 int[][])。

7. 变量与参数传递

  • 栈与堆:栈负责局部变量和参数(生命周期随函数);堆负责对象实例(由垃圾回收器管理)。
  • 参数传递修饰符
  • ref:按引用传递,传入前需初始化。
  • out:按引用传递,用于多返回值,传入前不要求初始化,但方法内必须赋值。
  • in (C# 7):按引用传递,但方法内不可修改(只读)。
  • params:允许方法接收可变数量的参数。

8. 运算符与 Null 处理

  • Null 运算符

  • ?? (合并):左侧为 null 则返回右侧值。

  • ??= (赋值):左侧为 null 则将右侧值赋给它。

  • ?. (条件访问):左侧为 null 则直接返回 null,不抛异常。

  • 优先级 :赋值、Null 合并、条件运算符是右结合的。

9. 控制流语句

  • 选择语句if-elseswitch

  • switch 增强 :支持按类型 switch、模式匹配及 switch 表达式

  • 循环语句whiledo-whileforforeach(用于遍历集合)。

  • 跳转语句breakcontinuegotoreturnthrow

10. 命名空间 (Namespace)

  • 作用:组织类型,避免命名冲突。
  • using 指令 :导入命名空间或静态成员 (using static)。
  • C# 10 新特性
  • 文件范围命名空间namespace MyNamespace; 减少嵌套。
  • 全局 usingglobal using 在整个项目中生效。
相关推荐
14年ABAP码农13 分钟前
ABAP - call API with x-www-form-urlencoded
开发语言
SuniaWang19 分钟前
Java 17实战:Record与密封类的黄金搭档
java·开发语言·python
2401_8274999921 分钟前
python项目实战10-网络机器人03
开发语言·python·php
AIminminHu33 分钟前
OpenGL渲染与几何内核那点事-项目实践理论补充(三-1-(3):番外篇-当你的CAD打开“怪兽级”STL时:从内存爆炸到零拷贝的极致优化)
开发语言·c++·线程·多线程
c++逐梦人41 分钟前
线程同步与互斥
linux·开发语言
坐吃山猪1 小时前
Python09_正则表达式
开发语言·python·正则表达式
AI科技星1 小时前
v=c 物理理论核心参数转换表达式大全
开发语言·线性代数·算法·数学建模·平面
oldmao_20001 小时前
第八章 设计并发代码
开发语言·c++·多线程编程·并发编程
SomeB1oody1 小时前
【Python深度学习】2.1. 卷积神经网络(CNN)模型理论(基础):卷积运算、池化、ReLU函数
开发语言·人工智能·python·深度学习·机器学习·cnn
Java面试题总结1 小时前
2026年Java面试题最新整理,附白话答案
java·开发语言·jvm·笔记·spring·intellij-idea