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方法

相关推荐
Data_agent10 分钟前
Python 编程实战:函数与模块化编程及内置模块探索
开发语言·python
new_zhou10 分钟前
vs2019+qt工程中生成dump文件及调试
开发语言·qt·visual studio·dump调试
栈与堆35 分钟前
LeetCode 19 - 删除链表的倒数第N个节点
java·开发语言·数据结构·python·算法·leetcode·链表
一路向北·重庆分伦37 分钟前
03-01:MQ常见问题梳理
java·开发语言
txinyu的博客41 分钟前
结合游戏场景理解,互斥锁,读写锁,自旋锁,CAS / 原子变量,分段锁
开发语言·c++·游戏
阿里嘎多学长1 小时前
2026-01-11 GitHub 热点项目精选
开发语言·程序员·github·代码托管
yuanyikangkang1 小时前
STM32 lin控制盒
开发语言
txinyu的博客1 小时前
HTTP服务实现用户级窗口限流
开发语言·c++·分布式·网络协议·http
代码村新手1 小时前
C++-类和对象(上)
开发语言·c++