Mar*_*ann 11
我所知道的没有二维数组的内置动态等价物,但你可以轻松地获得或多或少相同的功能.
使用此API定义Coordinate类:
public class Coordinate : IEquatable<Coordinate>
{
public Coordinate(int x, int y);
public int X { get; }
public int Y { get; }
// override Equals and GetHashcode...
}
Run Code Online (Sandbox Code Playgroud)
您现在可以创建这些Coordinate实例的集合.
如果您创建了一个HashSet<Coordinate>,则可以保证如果已经添加了坐标,则无法添加坐标,因为它会覆盖等于.
如果需要,可以将Coordinate扩展为Coordinate<T>:
public class Coordinate<T> //...
{
// previous stuff...
public T Item { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这将允许您将强类型项与每个坐标相关联,如下所示:
var items = new HashSet<Coordinate<string>>();
items.Add(new Coordinate<string>(1, 4) { Item = "Foo" });
items.Add(new Coordinate<string>(7, 19) { Item = "Foo" });
// ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26230 次 |
| 最近记录: |