在 C# 中获取空数组的最佳方法

问题描述 投票:0回答:2

假设我需要 C# 中

Book
类的空数组。

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

我找到了以下 3 个选项来实现这一目标:

  • new Book[0]
  • Array.Empty<Book>()
  • ArraySegment<Book>.Empty

您能建议我应该选择哪一个以及它们之间的区别吗?

c# arrays generics collections
2个回答
0
投票

在大多数情况下,您会使用

Array.Empty<Book>()
。请注意,每次调用都会返回相同的实例。

new Book[0]
将产生一个新数组。这将需要分配一个新对象,但如果您希望数组与其他空数组进行不同的比较,则可以使用该新对象。

ArraySegment<Book>.Empty
不会产生数组,而是产生
ArraySegment
。 ArraySegment 通常用于表示数组的较小部分。因此,如果您想要一个空数组段,请使用它。如果您应该使用 ArraySegment 还是 Array 是一个更复杂的问题,特别是因为有多种其他集合类型可供选择。


0
投票

new Book[0]
每次都会创建一个新实例。

Array.Empty<Book>()
将在当前实现下重用单例实例(尽管这是未记录),因此经常使用时可能会更高效。

ArraySegment<Book>.Empty.Array
不是惯用语,所以应该避免。

© www.soinside.com 2019 - 2024. All rights reserved.