2014-09-10 53 views
0

这一切都是在统一使用MonoDevelop的为什么我的数组中的元素仍为空?

我宣布我的数组这样

Tile[] Tiles = new Tile[7]; 

然后我尝试循环并设置元素(尽管这本身是解决这一问题的尝试)这样的

for (int i = 0; i < Tiles.Length; i++) 
{ 
    Tiles[i] = new Tile(); 
} 

但是,集合仍然充满了7个空对象。我必须错过简单的东西。我会认为最初的代码行就足够了。

整套例如:

using UnityEngine; 
using System.Collections; 

public class Foo : MonoBehaviour 
{ 
    Tile[] Tiles = new Tile[7]; 

    // Use this for initialization 
    void Start () 
    { 
     for (int i = 0; i < Tiles.Length; i++) 
     { 
      Tiles[i] = new Tile(); 
     } 
    } 
} 

这是瓷砖类

using UnityEngine; 
using System.Collections; 

public class Tile 
{ 
    public Tile[] nonAdjacentTiles = new Tile[6]; 
    public Transform _mesh; 
} 
+0

你可以发布一个完整的例子,演示我们可以运行的问题吗?到目前为止,您的代码意味着您所得到的问题是不可能的,因为数组中的项目已成功初始化。 – 2014-09-10 10:22:55

+0

请显示完整的示例。你显示的内容不应该导致你描述的行为。 – dasblinkenlight 2014-09-10 10:23:13

+0

这就是整个示例 – SirYakalot 2014-09-10 10:24:42

回答

-1

不,用于以类数组的缺省为空值。 所以你需要循环并在之后填充数组。

我喜欢这里发布的解决方案,为您的数组的干净的人口。 https://stackoverflow.com/a/4839502/4018288

+0

欢迎来到Stack Overflow!虽然这可能会在理论上回答这个问题,[这将是更可取的](http://meta.stackoverflow.com/q/8259)在这里包括答案的基本部分,并提供参考链接。 – Vogel612 2014-09-10 10:29:41

+0

@ Vogel612不幸的是,这不会在接近问题的地方得到答案,而且至多是一条评论。 – 2014-09-10 10:30:40

+0

@AdamHouldsworth嗯...点了。唉,答案可能应该是NAA的标志..我只是对答案的质量进行了低估和自动评论,因为这对我来说显而易见,这一点最需要它。我甚至没有检查正确性...... – Vogel612 2014-09-10 10:33:51

0

由于某种原因在Tile类中需要构造函数,我不确定为什么,但是使用Unity和Monodevelop似乎不支持默认的构造函数。

0

Siryakalot就像你说的,你需要在瓷砖类的构造函数,因为你不能实例化这样的类型Tyle的对象:

Tiles[i] = new Tile(); 

没有在瓷砖类

有constructore瓷砖()

祝你好运:)

+0

这是为什么?它是否与Unity相关? – SirYakalot 2014-09-11 10:38:51

+0

它是一个面向对象的规则 – karim 2014-09-11 13:10:02

+0

您正在使用C#,而C#是一种面向对象的编程语言 – karim 2014-09-11 13:11:43

相关问题