当前位置: 首页 > article >正文

c#难点2

1.对象池的使用

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

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


http://www.kler.cn/a/595985.html

相关文章:

  • Docker运行Mysql异常:Operation not permitted
  • stm32第六天继电器
  • 软件测试面试通关秘籍:高频技术考点与实战技巧全解析
  • 登山第二十梯:无人机实时自主探索——我是一只小小小鸟
  • [特殊字符] 2025蓝桥杯备赛Day10——B2120 单词的长度
  • Linux中的make与Makefile详解
  • linux 基础网络配置文件
  • 容器上云方案
  • STM32标准库之I2C示例代码
  • 【ArcGIS10.2】ArcGIS10.2彻底卸载
  • 下面从源码的角度看Spring Boot设计模式
  • [操作系统] 进程间通信:匿名管道原理与操作
  • 小试牛刀-Turbine数据分发
  • Hive Presto SQL 查询优化指南
  • 使用 Fetch API 实现流式读取
  • 深入理解 HTML 框架:iframe 与页面分割的学习进度(二)
  • 在 Linux 系统中,路径(Path)用于定位文件或目录的位置。路径分为两种类型:相对路径和绝对路径。它们的核心区别在于路径的起点不同
  • 油候插件、idea、VsCode插件推荐(自用)
  • 如何用大模型评估大模型——PAI-Judge裁判员大语言模型的实现简介
  • 网络华为HCIA+HCIP 以太网链路聚合与交换机堆叠、集群