gpt4 book ai didi

c# - C# 的动态 2D 结构

转载 作者:行者123 更新时间:2023-12-01 19:43:19 25 4
gpt4 key购买 nike

我正在开发一个存储类 MyType 的二维数组的类。并希望它使用动态数据类型。即不是 MyType[,]

MyType[,] 的问题问题是该类事先并不知道数组的大小,而且如果在 .NET Framework 的其他地方完成了管理数组大小调整的工作,我也不想麻烦。

该类在任何给定时刻都不知道最大数组大小,但数组将是密集的。我知道我可以使用静态数组,并根据需要重新分配内存,但如果可能的话,我更愿意使用内置实现。

还有比 List<List<MyType>> 更好的吗?为了这个目的?

编辑1:指定数组是密集的;

编辑 2 和 3:指定问题 MyType[,]

最佳答案

创建您自己的List<List<T>>封装如下:

public class Matrix<T>
{
List<List<T>> matrix;

public void Add(IEnumerable<T> row)
{
List<T> newRow = new List<T>(row);
matrix.Add(newRow);
}

public T this[int x, int y]
{
get { return matrix[y][x]; }
}
....
}

定义你自己的一套操作就可以了!自由自在!

通过封装它,如果还不够,您可以决定稍后采用更优化的实现。

        ICollection<T> rowOne = (ICollection<T>)new List<Int64>();
rowOne.Add(1);
rowOneList.Add(2);
rowOne.Add(3);

ICollection<T> rowTwo = (ICollection<T>)new List<Int64>();
rowTwo .Add(4);
rowTwo .Add(5);
rowTwo .Add(6);

关于c# - C# 的动态 2D 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/527553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com