如何定义二维动态数组? 如果我想使用 List<>,我可以将它用于二维吗?
最佳答案
据我所知,没有二维数组的内置动态等价物,但您可以轻松获得或多或少相同的功能。
使用此 API 定义坐标类:
public class Coordinate : IEquatable<Coordinate>
{
public Coordinate(int x, int y);
public int X { get; }
public int Y { get; }
// override Equals and GetHashcode...
}
您现在可以创建这些坐标实例的集合。
如果您创建一个 HashSet<Coordinate>
如果坐标已经添加,您将被保证不能添加坐标,因为它会覆盖等于。
如果需要,可以将坐标展开为Coordinate<T>
像这样:
public class Coordinate<T> //...
{
// previous stuff...
public T Item { get; set; }
}
这将允许您将强类型项与每个坐标相关联,如下所示:
var items = new HashSet<Coordinate<string>>();
items.Add(new Coordinate<string>(1, 4) { Item = "Foo" });
items.Add(new Coordinate<string>(7, 19) { Item = "Foo" });
// ...
关于c# - 定义二维动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1939319/