You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中获取Book类空数组的最优方式及三种实现差异解析

C#中Book类空数组的实现选择与差异分析

首先明确Book类的定义:

public class Book
{
    public string Title { get; set; }
    public Author Author { get; set; }
}

推荐选择

优先使用 Array.Empty<Book>();如果项目基于.NET Framework 4.6之前的老版本,选择 new Book[0];绝对不要用 ArraySegment<Book>.Empty 来获取空数组,它的设计用途和类型都不匹配这个场景。

三种实现方式的差异

1. new Book[0]

  • 每次调用都会创建一个全新的空Book[]实例,虽然空数组占用内存极小,但高频调用下会产生微小的额外内存开销。
  • 语法直观,兼容所有C#版本,适合老框架项目。

2. Array.Empty<Book>()

  • 这是.NET官方推荐的写法,从.NET Framework 4.6、.NET Core 1.0开始引入。
  • 内部维护了一个共享的静态空数组实例,所有调用该方法的地方都会复用同一个实例,完全没有重复创建对象的开销,性能更优。
  • 代码语义清晰,直接表达“获取一个空的Book数组”的意图。

3. ArraySegment<Book>.Empty

  • 它的类型是ArraySegment<Book>,而非Book[],本身是对数组的分段包装器,不是数组本身。
  • 虽然可以通过ArraySegment<Book>.Empty.Array拿到空数组,但这属于误用——ArraySegment<T>的设计目的是用来表示现有数组的一段连续区域,不是用来生成空数组的,这么写会让代码意图混淆,还多了一次属性访问的步骤。

内容的提问来源于stack exchange,提问作者Pavel Foltyn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 13:25:57