C#静态类与单例模式深度解析(七):从原理到工业级应用实践

一、静态类:全局工具箱的设计艺术

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xienda

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值