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

相关推荐
大土豆的bug记录42 分钟前
鸿蒙进行视频上传,使用 request.uploadFile方法
开发语言·前端·华为·arkts·鸿蒙·arkui
hhw1991123 小时前
c#知识点补充3
开发语言·c#
Antonio9153 小时前
【Q&A】观察者模式在QT有哪些应用?
开发语言·qt·观察者模式
Pandaconda3 小时前
【后端开发面试题】每日 3 题(二十)
开发语言·分布式·后端·面试·消息队列·熔断·服务限流
mqwguardain3 小时前
python常见反爬思路详解
开发语言·python
lmy3477712324 小时前
东软鸿蒙C++开发面经
开发语言·c++
hakesashou4 小时前
python多线程和多进程的区别有哪些
java·开发语言·jvm
就是有点傻4 小时前
C#中Interlocked.Exchange的作用
java·javascript·c#
每次的天空4 小时前
项目总结:GetX + Kotlin 协程实现跨端音乐播放实时同步
android·开发语言·kotlin
就是有点傻4 小时前
C# 中实现一个线程持续读取,另一个线程负责写入,且写入时读取线程暂停
数据库·c#