स्विक का जवाब अच्छा है लेकिन मुझे लगा कि मैं कुछ अतिरिक्त अंक जोड़ूंगा।
सबसे पहले, पैराग्राफ त्रुटिपूर्ण है। सूचक प्रकार वस्तु से विरासत में नहीं मिलते हैं। मान जो कि संकलित समय पर इंटरफ़ेस प्रकार या प्रकार पैरामीटर प्रकार के लिए जाना जाता है, रनटाइम के दौरान, या तो अमान्य संदर्भ या किसी चीज़ से उत्पन्न होने वाले उदाहरण हैं, जो ऑब्जेक्ट से विरासत में मिला है, लेकिन मुझे हमेशा यह कहना अजीब है कि ये प्रकार हैं " विरासत ”वस्तु से; उत्तराधिकार वह संपत्ति है जो पूर्वज के सदस्य वंश के सदस्य होते हैं, लेकिन आप आमतौर पर "ToString" को IEnumerable का सदस्य नहीं मानते हैं। आप इसे IEnumerable लागू करने वाली चीज़ का सदस्य होने के रूप में सोचते हैं ।
पैराग्राफ भी त्रुटिपूर्ण है क्योंकि यह एकमात्र स्थान है "आदिम प्रकार" कल्पना में दिखाई देता है, और यह परिभाषा के बिना दिखाई देता है। इसलिए यह अनावश्यक और भ्रामक है और इसे हटा दिया जाना चाहिए।
मैं चाहता हूं कि यह पैराग्राफ थोड़ी देर के लिए तय हो जाए। अगली बार जब मैं मैड्स देखूंगा तो उन्हें याद दिलाऊंगा।
अपने विशिष्ट प्रश्न को संबोधित करने के लिए: svick निश्चित रूप से सही है, लेकिन यह एक विशिष्ट उदाहरण देखने के लिए सहायक है। जब आप कहें:
struct ColorfulInt
{
int value;
Color color;
...
}
और आप बनाते हैं, कहते हैं, एक सरणी:
ColorfulInt[] x = new ColorFulInt[100];
फिर उन 100 इन्टस और 100 कलर्स का स्टोरेज अरेंजमेंट में ही हो जाता है । अगर ColorInt एक वर्ग के बजाय थे, तो सरणी में ColorInt के 100 संदर्भ होंगे, जिनमें से प्रत्येक को व्यक्तिगत रूप से आवंटित करना होगा। व्यक्तिगत रूप से उन सौ तत्वों को आवंटित करना समय और स्थान दोनों में बहुत कम कुशल है, केवल सरणी में ही भंडारण को आवंटित करने की तुलना में बहुत कम है।