c#难点整理2

1.对象池的使用

就是先定义一系列的对象,用一个,调一个。

cs 复制代码
 public class ObjectPool<T> where T : new()
 {
     private Queue<T> pool; // 用于存储对象的队列
     private int maxSize;   // 对象池的最大容量

     // 构造函数
     public ObjectPool(int maxSize)
     {
         this.maxSize = maxSize;
         pool = new Queue<T>(maxSize);
         InitializePool();
     }

     // 初始化对象池
     private void InitializePool()
     {
         for (int i = 0; i < maxSize; i++)
         {
             pool.Enqueue(new T()); // 创建对象并加入池中
         }
     }

     // 从池中获取对象
     public T GetObject()
     {
         if (pool.Count > 0)
         {
             return pool.Dequeue(); // 如果池中有对象,直接返回
         }
         else
         {
             Console.WriteLine("Pool is empty, creating new object.");
             return default(T);//用完了返回null
             //return new T(); // 如果池为空,创建新对象
         }
     }

     // 将对象归还到池中
     public void ReturnObject(T obj)
     {
         if (pool.Count < maxSize)
         {
             pool.Enqueue(obj); // 如果池未满,归还对象
         }
         else
         {
             Console.WriteLine("Pool is full, discarding object.");
         }
     }
 }

2.virtual的使用

父类方法有virtual,子类方法才可家override,但是子类方法其实不加override也可调用

3.CopyTo方法

相关推荐
TPBoreas3 小时前
Jenkins 改完端口号启动不起来了
java·开发语言
TE-茶叶蛋3 小时前
Vuerouter 的底层实现原理
开发语言·javascript·ecmascript
云闲不收4 小时前
设计模式原则
开发语言
秋名RG4 小时前
深入解析建造者模式(Builder Pattern)——以Java实现复杂对象构建的艺术
java·开发语言·建造者模式
技术求索者4 小时前
c++学习
开发语言·c++·学习
山猪打不过家猪5 小时前
(二)毛子整洁架构(CQRS/Dapper/领域事件处理器/垂直切片)
开发语言·.net
△曉風殘月〆6 小时前
C#串口通信
嵌入式硬件·c#·串口
方博士AI机器人7 小时前
Python 3.x 内置装饰器 (4) - @dataclass
开发语言·python
weixin_376934637 小时前
JDK Version Manager (JVMS)
java·开发语言
Logintern097 小时前
【每天学习一点点】使用Python的pathlib模块分割文件路径
开发语言·python·学习