c# - 制作二维数组/集合类的最佳实践

标签 c# arrays collections 2d

我正在开发一个将广泛用于其他应用程序的通用库。可以说是一种SDK库。

我需要实现一个 2D 集合实现。它将是一个通用的模板抽象类。那么制作二维数组或集合的良好做法是什么。它就像一个网格结构。

这是我为一维集合所做的。

public abstract class BaseCollection<T> : Collection<T>

二维采集应该怎么办。 [,] 或其他东西。

最佳答案

有多种选择,但部分取决于您的 2D 集合的实际实现方式。

如果你只想要一个二维数组,那么有一个特殊的语法。这是一个二维字符串数组:

string[,] twoDimStringArray = new string[4,5];

另一种选择是使用列表列表:

List<List<string>> listOfListOfString = new List<List<string>>();

你可以有一个锯齿状的数组:

string[][] arrayOfArraysOfString = new string[5][];

一般来说,我不鼓励您使用扩展另一个集合类型的类。通常最好封装另一种类型的集合。如果你的类本身作为一个集合公开,那么使用各种合适的接口(interface),比如 IEnumerable , ICollection , IList , ISet

如果您有一个二维索引列表样式的集合,那么您或许可以将您的类设为 IList<IList<T>>。 ,或 `ICollection>,如果你想公开这些接口(interface)的功能级别(你可能不会,如果不了解更多上下文就很难说)。

关于c# - 制作二维数组/集合类的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16898107/

相关文章:

C#-Like Delegates in C++

java - 从项目文件夹内加载图像并在 jsf 弹出窗口中显示

c# - c#/.net x.x 是否有双向链表的实现(可以向后迭代)?

java - 将文档中单词后面出现的字符串存储到数组中并将它们组合起来

sorting - JAXB 强制对集合进行排序

collections - 解释 verity 索引和文档搜索限制

c# - DotNetOpenAuth 的 DesktopConsumer ProcessUserAuthorization 中的验证器是什么?

c# - 将 C# 翻译成 Powershell

c# - 替换方法的 MethodBody 中的指令

java - 如何从java中的固定数组中删除最后一项