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

相关推荐
geats人山人海21 分钟前
java 4继承
java·开发语言
aqiu11111133 分钟前
【C++算法打怪专栏】C++ `unordered_set` 常用初始化与插入方法总结
开发语言·c++·算法
众链网络44 分钟前
Agent 的成本大头不在“写“,在“判断“:拆解专用决策模型的三层架构
java·开发语言·人工智能·微服务
周小董1 小时前
[1371]jdk管理工具
java·开发语言
Terra.K1 小时前
高精度阶乘求和模板深度解析
开发语言·c++·算法
Hum8le1 小时前
漏洞知识点《php伪协议》
开发语言·安全·web安全·php
青春逝如流水1 小时前
Java 中线程的创建方式:从基础到现代
java·开发语言·多线程·ai文章
智码看视界1 小时前
C++智能指针全景剖析及面试20问
开发语言·c++·深度学习·面试·内存管理·智能指针
铅笔小新z1 小时前
【C语言】深入理解指针
c语言·开发语言
余醉 | dtminer2 小时前
56%的保护效应藏在乳腺密度里:Nat Commun 高分中介孟德尔随机化全 R 管线拆解(附核心图)
开发语言·r语言·孟德尔随机化