一、数组与字符串操作

数组常用方法

  • 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 自动调用,无法手动调用。
  • 静态构造函数不能有参数,也不能被显式实例化调用。

总结一句话:静态成员属于类,全类共享一份;实例成员属于对象,每个对象各有一份。静态方法活在"类的世界",实例方法活在"对象的世界",前者无法直接触及后者。

更多推荐