2012-09-19 14 views
5

डिफ़ॉल्ट रूप से, संदर्भ प्रकारों की एक सरणी सभी संदर्भों के साथ शून्य के रूप में शुरू होती है।संदर्भ प्रकारों की सरणी शुरू करने का आसान तरीका?

क्या इसके बजाय किसी भी प्रकार की वाक्यविन्यास चाल उन्हें नई डिफ़ॉल्ट वस्तुओं के साथ शुरू करने के लिए है?

जैसे

public class Child 
{ 
} 

public class Parent 
{ 
    private Child[] _children = new Child[10]; 

    public Parent() 
    { 
     //any way to negate the need for this? 
     for (int n = 0; n < _children.Length; n++) 
      _children[n] = new Child(); 
    } 
} 
+0

नहीं, लूप को छिपाने के लिए केवल स्पष्ट तरीके (इसे एक सहायक विधि में डालने आदि)। – dtb

+1

+1 यह इंगित करने के लिए कि आप एक * सिंटैक्स चाल * चाहते हैं, न कि अधिकांश लोग पूछते हैं - "क्या मैं सरणी को फिर से चलाने के बिना ऐसा कर सकता हूं?"। हालांकि, मुझे लगता है कि आप किसी प्रकार की पठनीयता को बनाए रखना चाहते हैं और वास्तव में बताने में सक्षम होना चाहते हैं - एक नज़र में - कोड क्या करता है। =) –

उत्तर

6

उपयोग LINQ:

private Child[] _children = Enumerable 
           .Range(1, 10) 
           .Select(i => new Child()) 
           .ToArray(); 
3

आप सका उपयोग object and collection initializers, हालांकि अपने संस्करण शायद terser है और जैसे बड़े संग्रह के लिए है इस्तेमाल किया जा सकता:

private Child[] _children = new Child[] { 
new Child(), 
new Child(), 
new Child(), 
new Child(), 
new Child(), 
new Child(), 
new Child(), 
new Child(), 
new Child() 
}; 
0

भले ही आपका लूप खराब दिखता है, टी से भी वह LINQ कथन का रनटाइम व्यवहार बहुत तेज़ होगा। जैसे एक सरणी में 20 रूपों के साथ एक परीक्षण 0.7 (लूप के लिए) 3.5 (LINQ) मिलीसेकंड

संबंधित मुद्दे