将一组对象传递给函数

时间:2016-08-11 22:06:31

标签: c# arrays function object methods

我有一个名为“Tiles”的课程。

public class Tiles
{

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

程序创建2D网格并将信息(XY位置,tileID)存储在Tiles类的对象数组中。像这样:

创建新对象数组

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)    
}

==这给我错误:

  

错误CS1552数组类型说明符[]必须出现在参数名称

之前

足够公平,这一定很容易解决。

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#和视觉工作室”一书,但对象阵列根本没有涉及。我认为这里的实际错误是我不知道自己在做什么。那么有人能告诉我如何将一个对象数组传递给一个方法吗?我不想只是复制+粘贴代码并让别人为我修复它。我试图在stackoverflow上找到一个解决方案,但在搜索“C#object array to function”或类似内容之后,最终获得了10,214个结果。

1 个答案:

答案 0 :(得分:1)

编辑:哎呀,我错过了一个小细节,完全倒退了回答你的问题。现在很清楚,你实际上并不想将一个数组交给你的函数,因为你用一个合适的访问器引用来调用你的函数。如果你重写你的函数来取Tiles而不是Tiles[],你应该是好的。由于您的代码希望xTiles而您的函数声明预期xTiles[],因此您的所有问题都会出现。

随意忽略以下代码块,但最后确实按下了注释。

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

public static void tileStatusChecker(Tiles[] x)

但是您的以下代码尝试获取&#34; x.cordX&#34;等值,将无法找到它们 - 数组没有.CordX;瓷砖有一个.CordX。如果你想真正得到一个Tiles,你会想要,比如说x中的第一个(或者技术上是&#39;零&#39;)元素,即x [0]。例如。第一个Tiles的CordX将是x [0] .CordX。

边注: 它经常帮助我编写和讨论我的代码,以选择符合我命名的东西的语法结构的名称。如果它是一个对象,我通常称之为对象,例如如果一个类代表一个瓷砖我会称之为&#34; Tile&#34;而不是&#34; Tiles&#34;。如果你有一个代表Tiles集合的第二个类,就像一个二维数组的包装器(正如我过去所做的那样),然后我会把它命名为Tiles。