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

相关推荐
LZQqqqqo1 小时前
C# 中生成随机数的常用方法
java·算法·c#
程序员编程指南1 小时前
Qt 嵌入式 Linux 系统定制全指南
linux·c语言·开发语言·c++·qt
seabirdssss5 小时前
错误: 找不到或无法加载主类 原因: java.lang.ClassNotFoundException
java·开发语言
gnawkhhkwang5 小时前
io_getevents 和 io_pgetevents 系统调用及示例
linux·c语言·开发语言
喵手5 小时前
使用ASIWebPageRequest库编写Objective-C下载器程序
开发语言·macos·objective-c
weixin_456904275 小时前
C#泛型委托讲解
开发语言·c#
君莫笑几人回6 小时前
关于记录一下“bug”,在做图片上传的时候出现的小问题
java·开发语言·spring boot
rockmelodies6 小时前
RSA 解密逻辑
开发语言·python
澡点睡觉7 小时前
golang的包和闭包
开发语言·后端·golang
Dxy12393102168 小时前
python创建一个excel文件
开发语言·python·excel