C# 基础知识点一周学习总结
·
一、数组与字符串操作
数组常用方法
Array.Resize:用于动态调整数组大小(扩容),注意它会创建一个新数组并复制原有元素。Array.Sort:对数组进行升序排序,原地修改数组元素顺序。Array.Copy(5参数重载):将一个数组的指定范围元素复制到另一个数组的指定位置,提供精确的复制控制。
字符串连接
string.Join(",", arr):使用指定分隔符(此处为逗号)将数组中的元素连接成一个字符串,简洁高效。
二、静态成员与实例成员
访问方式
| 类型 | 访问方式 | 说明 |
|---|---|---|
| 静态方法 / 静态变量 | 类名.成员名 |
属于类本身,无需创建对象 |
| 实例方法 / 实例变量 | 对象名.成员名 |
属于具体对象,需先实例化 |
访问规则
- 实例方法可以访问静态变量和静态方法。
- 静态方法只能使用静态变量,不能直接访问实例成员。
三、变量初始化
| 变量类型 | 初始化要求 |
|---|---|
| 局部变量 | 必须手动初始化,否则编译报错 |
| 全局变量(成员变量) | 有默认值(数值类型为 0,引用类型为 null) |
四、常见异常类型
| 异常类型 | 触发场景 |
|---|---|
IndexOutOfRangeException |
数组下标越界访问 |
NullReferenceException |
对象引用未设置到对象实例(空引用调用) |
FormatException |
字符串格式不正确(如类型转换失败) |
五、C# 属性(Property)
C# 将 Java 中的 get / set 方法封装为属性(Property),语法更简洁:
csharp
复制
public int Age { get; set; } // 可读可写
public int Id { get; private set; } // 可读,私有可写
public string Name { get; } // 只读属性(允许只有 get)
注意:属性可以只有
get(只读),但不能只有set(只写属性不允许直接定义,需借助其他机制实现)。
六、基于数组的集合
以数组作为底层存储的集合(如 List<T> 内部实现),存在元素数量上限。当元素数量超出数组容量时,需要扩容(通常是创建一个更大的新数组并复制数据),这涉及到内存重新分配和拷贝开销。
七、静态变量与实例变量(深入理解)
存储与生命周期
| 类型 | 数量 | 存储位置 | 调用方式 |
|---|---|---|---|
| 静态变量(类变量) | 全局只有一份 | 内存(静态存储区) | 类名.变量名 |
| 实例变量 | 每 new 一次产生新的一份 |
堆内存 | 对象名.变量名 |
静态构造函数
- 一个类只能有一个静态无参构造函数。
- 静态构造函数只会在类第一次被使用时执行一次,由 CLR 自动调用,无法手动调用。
- 静态构造函数不能有参数,也不能被显式实例化调用。
总结一句话:静态成员属于类,全类共享一份;实例成员属于对象,每个对象各有一份。静态方法活在"类的世界",实例方法活在"对象的世界",前者无法直接触及后者。
更多推荐



所有评论(0)