析构函数(~ClassName)在对象销毁前执行,专用于释放非托管资源(如文件句柄、非托管内存)。托管资源(如.NET对象)由GC自动回收,一般无需手动处理。
public class ResourceHolder
{
private IntPtr fileHandle; // 非托管文件句柄
~ResourceHolder() // 析构函数
{
CloseHandle(fileHandle); // 调用Win32 API释放资源
}
}
特性 | const | readonly |
---|---|---|
初始化时机 | 编译时 | 运行时(构造函数) |
内存存储 | 无独立存储 | 有独立内存位置 |
作用域 | 隐含static | 支持实例/静态字段 |
class ConfigLoader
{
readonly string _configPath; // 运行时初始化
public ConfigLoader(string path) => _configPath = path;
public ConfigLoader() => _configPath = "default.json"; // 不同构造方法赋值
}
区分同名的类字段与方法参数(慎用,建议参数名加_前缀避免冲突)。
public void SetValue(int value) => this.value = value;
在构造函数中通过this调用其他重载构造方法。
public class User
{
public User(string name) : this(name, 18) {} // 调用下方构造函数
public User(string name, int age) { ... }
}
将当前对象作为参数传递给外部方法。
public void Save() => Database.Save(this);