一、静态类:全局工具箱的设计艺术
1.1 静态类的本质特性
public static class MathUtils
{
// 静态字段(线程安全需自行处理)
public static readonly double GoldenRatio = 1.618;
// 静态方法
public static double CircleArea(double radius)
{
return Math.PI * radius * radius;
}
}
// 使用示例
double area = MathUtils.CircleArea(5);
静态类核心特征:
-
密封性:无法被继承(隐式
sealed
) -
不可实例化:无构造函数(可定义静态构造函数)
-
全局唯一性:所有成员必须为静态
-
内存常驻:生命周期与应用程序域一致
1.2 静态构造函数妙用
public static class ConfigLoader
{
public static string ApiKey { get; }
static ConfigLoader()
{
ApiKey = File.ReadAllText("config.key");
Console.WriteLine("配置加载完成"); // 首次访问时执行
}
}
1.3 性能影响与最佳实践
场景 | 推荐做法 | 风险提示 |
---|---|---|
高频调用数学计算 | 使用静态方法 | 注意线程安全 |
资源密集型操作 | 避免静态类存储大量数据 | 可能导致内存泄漏 |
跨程序集复用工具类 | 使用internal static class |
注意访问权限控制 |
二、单例模式:全局唯一实例的精密控制
2.1 单例模式演进史
// 基础版(线程不安全)
public class BasicSingleton
{
private static BasicSingleton _instance;
private BasicSingleton() { }
public static BasicSingleton Instance =>
_instance ??= new BasicSingleton();
}
// 线程安全版(双重检查锁)
public class ThreadSafeSingleton
{
private static reado