2011-08-31 47 views
0

我可以用這個片段:如何使用C#對象數組作爲物業

public object Obj 
{ 
    get; 
    set; 
} 

像這樣:

public fubar() 
{ 
    ... 
    Obj = SomeObject; 
} 

,但似乎無法使用這個片段:

public object[] ObjectAsArray 
{ 
    get; 
    set; 
} 

像這樣或任何其他方式,我已嘗試到目前爲止:

public fubar() 
{ 
    ... 
    Obj[n] = SomeObject; 
    //or 
    var x = Obj[0] as SomeObject; 
    //or other ways... 
} 

我似乎在這裏失去了一些東西。

有人可以舉一個簡單的例子,說明object[]類型的C#屬性的正確聲明及其使用情況嗎?

+0

如果現有的答案沒有幫助,請說出錯的地方,並提供一個簡短但完整的程序來展示問題。 –

回答

1

你正試圖在Obj本身初始化之前設置Obj[n] ......所以,我想你會得到一個空引用異常。您需要執行的任務,像這樣:

Obj = new Object[]; 

...和背景:

public fubar() 
{ 

    Obj = new Object[13]{}; // where 13 is the number of elements 
    Obj[n] = SomeObject; 
} 
2

只要你從Obj改變它ObjectAsArray不久就應該編譯。你仍然需要實際創建雖然數組:

ObjectAsArray = new object[10]; 
ObjectAsArray[5] = "Hello"; 
0

我建議增加一個私人支持字段爲對象[]屬性和初始化 - 無論是直接或吸氣。

object[] _objectsAsArray = new object[10]; 

OR

public object[] ObjectAsArray 
{  
    get 
    { 
     if(_objectsAsArray == null) 
      _objectsAsArray = new object[10]; 
     return _objectsAsArray; 
    } 
    set 
    { 
     _objectsAsArray = value; 
    } 
} 

的編譯器是無論如何創建一個私有支持字段所以爲什麼不明確了。此外,自動實現的屬性有一些缺點(序列化,線程等)。做到「老式」的方式也爲您提供了一個實際創建陣列的好地方。當然,如果您不需要擔心這些問題,請繼續使用自動實施的屬性。