我想在c#控制台应用程序中创建一个非可视坐标网格,这样我就可以创建一个设置大小为“aXb”的网格(例如9X9或6X9等)。然后,我可以为每个坐标(x,y)分配一个数字,然后使用这些特定坐标访问它。我在c#中看到的每个网格示例都明确地用于使用WPF创建可视网格或以某种方式使用控制台应用程序中的字符。我只想将我的网格保存为数据,并将数字保存到每个(x,y)坐标。是否可以使用数组/列表实现这一点?任何帮助或建议将不胜感激。实际上,我确实知道设置坐标的代码是什么:
int x = 0;
int y = 0;
int[,] grid = new int[,] { { x }, { y } };
答案 0 :(得分:1)
class Grid
{
public Grid(int width, int length) {
coordinates = new List<Coordinate>();
for (int i = 1; i < width + 1; i++) {
for (int k = 1; k < length + 1; k++) {
coordinates.Add(new Coordinate(k,i));
}
}
}
List<Coordinate> coordinates;
int width { get; set; }
int length { get; set; }
public int accessCoordinate(int x,int y) {
return coordinates.Where(coord => coord.x == x && coord.y == y)
.FirstOrDefault().storedValue;
}
public void assignValue(int x, int y,int value) {
coordinates.Where(coord => coord.x == x && coord.y == y)
.FirstOrDefault().storedValue = value;
}
}
class Coordinate
{
public Coordinate(int _x, int _y) {
x = _x;
y = _y;
}
public int x { get; set; }
public int y { get; set; }
public int storedValue { get; set; }
}
这里只是一个简单的例子,说明在这种情况下如何在控制台应用程序中使用它
Grid newGrid = new Grid(5, 6);
newGrid.assignValue(2, 3, 500);
var retrievedValue = newGrid.accessCoordinate(2, 3);
Console.WriteLine(retrievedValue);
Console.ReadLine();
只是注意,这可能不是最有效/最好的方式,但它应该将其简化到易于修改和快速理解的程度