2014-09-10 51 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

相關問題