【发布时间】:2017-03-25 19:01:50
【问题描述】:
我正在尝试创建一个具有二维数组属性的类。该数组将保存网格上的各种 x,y 坐标(例如 0,1 或 3,7),并且数组的大小取决于名为 size 的类属性。
您将如何在 C# 中创建这个数组?我在下面给出了我的解决方案,但是我的 C# 经验很少,并且来自 Python 背景和一些 javascript 知识,感觉这个问题有更好的解决方案。
请各位 C# 高手赐教好吗?
提前感谢您的帮助。
这是我的代码:
public class Obj
{
int Size; // Defines length of array
int[,] Pos;
// constructor
public Obj(int size)
{
this.Size = size;
this.Pos = new int[size, 2];
}
public void set_coord(int index, int x, int y)
{
if (index >= this.Size) {
Console.WriteLine("Catch OutOfRangeException");
}
else
{
this.Pos[index, 0] = x;
this.Pos[index, 1] = y;
}
}
【问题讨论】:
-
创建一个也保存坐标而不是使用数组的类。例如,您有一个名为
Coordinate的类,具有两个属性 X 和 Y。然后您将创建一维坐标数组。 -
仅供参考:在 C# 中,属性是完全不同的东西。您应该在这里使用的术语是field。此外,看起来您正在创建数组,所以您的问题不清楚。你能详细说明一下吗?
-
你写的代码没有错;这是创建二维数组的方式,但由于您要存储 x,y 坐标,您只需创建一个
Points 的一维数组(或创建自己的结构来保存 x 和 y 值)您还可能想要了解 C# 属性和索引器 -
似乎他在寻求最好的解决方案,我很确定没有,你的似乎是有效的,但我更喜欢 M.kazem Akhgary 的方法。
-
首先,非常感谢您的快速回答。 @KevKong Dennis_E 建议的 Point 类似乎已经存在。编写自己的 Coordinate 类(如 M.kazem Akhgary 所建议的)我有什么优势?
标签: c# arrays class multidimensional-array