将对象数组传递给函数

本文关键字:函数 对象 数组 | 更新日期: 2023-09-27 18:01:57

我有一个名为"Tiles"的类。

public class Tiles
{
    public int cordX, cordY, tileID;
    Booleans someBooleans;
    public constructor(int X,int Y,int ID)
}

程序创建一个2d网格并在Tiles类的对象数组中存储信息(xy位置,tileID)。这样的:

创建新的对象数组

Tiles[] tileArray = new Tiles[totalGridSize];

循环两次以实例化对象数组

中的单个元素
tileArray[X + Y] = new Tiles(xPos, yPos, ID);

到目前为止一切正常。但是现在我想把tileArray的元素传递给一个函数。(函数可以是静态的吗?)

public static void tileStatusChecker(Tiles x[])<---
{    
    Console.WriteLine("Position is {0}X and {1}Y. ID=={2}", x.cordX, x.cordY, x.tileID)    
}

==这给我错误:

数组类型说明符[]必须出现在参数名称 之前

很好,这一定很容易修复。

public static void tileStatusChecker(Tiles[] x)
{
    Console.WriteLine("Position is {0}X and {1}Y. ID=={2}", x.cordX, x.cordY, x.tileID)    
}

现在编译器真的对我很生气:CS1061 'Tiles[]'不包含'tileID'的定义,并且没有扩展方法'tileID'接受类型为'Tiles[]'的第一个参数可以找到(您是否缺少using指令或汇编引用?)

同时,编译器也对我在第一个地方调用函数感到生气,声明数组从未创建。

Tiles.tileStatusChecker(tileArray[7]);

CS0103名称'tileArray'在当前上下文中不存在

我旁边有一本标准的"学习c#和visual studio"的书,但对象数组根本没有涵盖。我认为真正的错误是我不知道自己在做什么。有人能告诉我如何将对象数组传递给方法吗?我不想只是复制+粘贴代码,并有人为我修复它。我试图在stackoverflow上找到一个解决方案,但在搜索"c#对象数组的功能"或类似内容后,最终得到了10,214个结果。

将对象数组传递给函数

编辑:哎呀,我错过了一个小细节,完全反着回答了你的问题。现在很清楚,您实际上并不希望将Array传递给函数,因为您使用了适当的访问器引用来调用函数。如果你重写函数取Tiles而不是Tiles[],应该没问题。你所有的问题都出现了,因为你的代码期望xTiles,而你的函数声明期望xTiles[]

可以随意忽略下面的代码块,但一定要在最后注意到。

你的第二次尝试比你的第一次尝试好,将一个数组交给函数应该看起来像

public static void tileStatusChecker(Tiles[] x)

,但是你下面的代码,试图获得像"x.cordX"这样的值,将找不到它们-数组没有。tile (s)有. cordx。如果你真的想要获得Tiles,你会想要x中的第一个元素(或者技术上的"第零"),也就是x[0]。例如,第一个Tiles的CordX将是x[0].CordX。

附注:它经常帮助我在写作和谈论我的代码时选择符合我所命名的东西的语法结构的名字。如果它是一个对象,我通常会叫它object之类的东西,例如,如果一个类代表一个tile,我会叫它"tile"而不是"Tiles"。如果您有第二个类来表示Tiles的集合,就像一个二维数组的包装器(就像我过去所做的那样),那么我会将其命名为Tiles。