對于 uni 我正在撰寫這個有網格的游戲int[,] grid;。我也有這門課:
public class Point
{
public int x;
public int y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
public static Point operator (Point a, Point b)
=> new Point(a.x b.x, a.y b.y);
}
表示此網格中的點。有沒有辦法使用點來訪問這個網格的值?假設您想要 (2, 3) 處的網格值,您可以通過grid[new Point(2,3)]?
uj5u.com熱心網友回復:
,int[,] grid;不,你不能。
int[,] grid;但是,您可以用一個類包裝并像這樣使用索引器屬性
public class GridWrapper : Tuple<int, int>
{
// This is your grid data
public int[,] Grid { set; get; }
// Indexer Property
public int this[Point point] => Grid[point.x, point.y];
public GridWrapper(int dim1, int dim2) : base(dim1, dim2)
{
Grid = new int[dim1, dim2];
}
}
現在,這將起作用
var value = grid[new Point(1, 2)];
完整示例
// define a grid
var grid = new GridWrapper(3, 3);
// mock data
for (int i = 0; i < 3; i )
for (int j = 0; j < 3; j )
grid.Grid[i, j] = i j;
// getting a value using the Indexer Property
var value = grid[new Point(1, 2)];
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/518385.html
標籤:C#数组列表网格布局观点
上一篇:有沒有辦法不讓我的清單消失?
