2013-10-11 106 views
0

C#編程類 typeObject [] array = new typeObject [5]; 此外,typeObject有一個構造函數,它接受一個整數。 如何使用不同的整數調用每個對象,而不是使用默認構造函數? 謝謝。聲明一個具有不同參數的對象數組

+0

我的意思是將數組的每個索引聲明爲構造函數的不同傳遞參數。基本上我想要的是array [1] = new typeObject(3); array [2] = new typeObject(15); ... –

回答

3

您既可以構建直接在數組中的元素:

typeObject[] array = new typeObject[5]; 
array[0] = new typeObject(1); 
array[1] = new typeObject(2); 

,或者您可以使用數組的初始化:

typeObject[] array = new typeObject[]{new typeObject(1), new typeObject(2), ... new typeObject(5)}; 
+0

對於第一個選項,第一個語句不會用默認構造函數聲明所有對象嗎?謝謝@William –

+0

@LeonardLie在第一個代碼示例中,數組的每個元素都將初始化爲'typeObject'的默認值。如果這是一個類,那麼每個元素將是空的。如果這是一個結構,例如一個'DateTime',那麼它大致等同於調用結構體的無參數構造函數 - 雖然實際上無法爲一個結構體定義一個自定義無參數構造函數,但編譯器爲您提供了它。 –

1

沒有什麼錯誤使用您在comment引代碼:

typeObject[] array = new typeObject[5]; 
array[0] = new typeObject(7); // note: array indexes start at 0 
array[1] = new typeObject(3); 
array[2] = new typeObject(15); 
... 

但是如果你想要做一個聲明,你可以al方式使用數組初始化語法:

typeObject[] array = new typeObject[] 
{ 
    new typeObject(7), 
    new typeObject(3), 
    new typeObject(15), 
}; 
+0

謝謝。那麼,第二個代碼中的第一個語句不會調用typeObject類的默認構造函數? @ p.s.w.g –

+0

@LeonardLie第二個代碼塊只包含一條語句,它使用指定的構造函數(不是無參數的)構造* N *對象,並初始化一個包含這些對象作爲元素的新數組。 –

+0

不,它只是創建數組。在用新的typeObject()語句初始化之前,數組的元素是空的。 –

相關問題