Vb.net 如何从结构中获取整个阵列?

Vb.net 如何从结构中获取整个阵列?,vb.net,Vb.net,我正在做一个棋盘游戏,想在一个结构中存储10x10网格的每个正方形的信息,我需要从记录结构正方形中获取整个数组矩形,并在e.Graphics.fillrectanges()中使用它。除了声明之外的所有内容都在绘制事件中 Public Structure squares Dim rects As Rectangle End Structure Dim s(99) As squares 'assigning values to each instance of rects e.Grap

我正在做一个棋盘游戏,想在一个结构中存储10x10网格的每个正方形的信息,我需要从记录结构
正方形中获取整个数组
矩形
,并在
e.Graphics.fillrectanges()
中使用它。除了声明之外的所有内容都在绘制事件中

Public Structure squares
    Dim rects As Rectangle
End Structure

Dim s(99) As squares

'assigning values to each instance of rects

e.Graphics.FillRectangles(b1, s.rects)
e.Graphics.DrawRectangles(p1, s.rects)
但这会产生错误。
“rects”不是“Form1.squares()”的成员。
。s().rects也不起作用。请注意,我并没有试图获取特定的索引,因为
FillRectangles
不接受它作为参数

我以前有自己的
rects
,它工作起来没有任何问题

Dim rects(99) as Rectangle

'assigning values to each instance of rects

e.Graphics.FillRectangles(b1, rects)
e.Graphics.DrawRectangles(p1, rects)
我可以使用一个单独绘制每个矩形的循环,但我发现这个方法要慢得多,而且不是我想要的


是否有任何方法可以实现这一点,或者我应该将其作为一个数组单独使用,并且只在结构内部存储其他信息?我应该使用结构还是使用并行数组更好?

您不能调用
s.rects
。没有可提取
矩形的
索引
。必须是
s(indexHere).rects
。 但是,下面的代码返回数组中的所有
rect

Dim s(99) As squares
'Do not forget to set rects before calling those two
e.Graphics.FillRectangles(Brushes.Red, s.Select(Function(x) x.rects).ToArray)
e.Graphics.DrawRectangles(Pens.Black, s.Select(Function(x) x.rects).ToArray)

不能调用
s.rects
。没有可提取
矩形的
索引
。必须是
s(indexHere).rects
。 但是,下面的代码返回数组中的所有
rect

Dim s(99) As squares
'Do not forget to set rects before calling those two
e.Graphics.FillRectangles(Brushes.Red, s.Select(Function(x) x.rects).ToArray)
e.Graphics.DrawRectangles(Pens.Black, s.Select(Function(x) x.rects).ToArray)

关于你的最后一个问题,这取决于你在做什么样的游戏,以及以牺牲代码清晰性为代价获得高性能的重要性。我倾向于认为棋盘游戏(与FPS或RTS类型的游戏相比)更倾向于清晰,因此如果代码更清晰,请坚持结构。代码清晰(在某种程度上)对我更有利,所以结构也是如此。关于你的最后一个问题,这取决于您正在制作的游戏类型,以及以牺牲代码清晰度为代价实现高性能的重要性。我倾向于认为棋盘游戏(与FPS或RTS类型的游戏相比)更倾向于清晰,因此,如果代码更清晰,请坚持结构。代码清晰(在某种程度上)对我更有利,所以结构也是如此。这正是我想要的谢谢,标记为答案。这正是我想要的谢谢,标记为答案的。