C# / .NET : when structures are better than classes? -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 25 उत्तर

का डुप्लिकेट:

क्या Microsoft .NET 2.0 / 3.5 में कुछ वर्गों के बजाय संरचनाओं का उपयोग करने के लिए व्यावहारिक कारण हैं?

"संरचनाओं और वर्गों के बीच अंतर क्या है?" - यह संभवतः ".NET डेवलपर" रिक्तियों के लिए intrviews पर सबसे लोकप्रिय सवाल है। एकमात्र जवाब है कि साक्षात्कारकर्ता सही मानता है कि "संरचनाओं को ढेर पर आवंटित किया जाता है और कक्षाओं को ढेर पर आवंटित किया जाता है" और इसके बारे में और कोई सवाल नहीं पूछा जाता है।

कुछ Google खोज ने दिखाया है कि:

< ब्लॉकक्ॉट>

a) संरचनाओं में कई सीमाएं होती हैं और कक्षाओं की तुलना में कोई अतिरिक्त क्षमता नहीं होती है और ख) स्टैक (और इस तरह की संरचनाएं) तेज हो सकती हैं बहुत विशेष परिस्थितियों सहित:

  • डेटा का आकार कम है जो 16 बाइट्स
  • कोई व्यापक मुक्केबाजी / अनबॉक्सिंग
  • संरचना का

(कृपया इस सूची में सही / जोड़ें, यदि यह है तो यह पूरी तरह से डेटा का पूरा सेट बड़ा नहीं है (अन्यथा हम स्टैक अतिप्रवाह प्राप्त करते हैं)

  • गलत है या नहीं भरा है)

    जहां तक ​​मुझे पता है, सबसे विशिष्ट व्यावसायिक परियोजनाएं (ईआरएम, बैंकों के लिए समाधान, समाधान, आदि) एक भी संरचना को परिभाषित नहीं करते हैं, सभी कस्टम डेटा प्रकार को परिभाषित किया जाता है इसके बदले कक्षाएं क्या इस दृष्टिकोण में कुछ गड़बड़ी है या कम से कम अपूर्ण?

    नोट: सवाल रन-ऑफ-द-मिल बिजनेस एप्स के बारे में है, कृपया "असामान्य" मामलों जैसे कि खेल के विकास, वास्तविक समय की सूची न दें एनीमेशन, पिछड़े संगतता (COM / Interop), अप्रबंधित कोड और इसी तरह - ये उत्तर पहले से ही इस समान प्रश्न के अधीन हैं:

    कक्षाओं के साथ एक और अंतर यह है कि जब आप एक संरचना उदाहरण को किसी चर में आवंटित करते हैं, तो आप सिर्फ एक संदर्भ कॉपी नहीं कर रहे हैं, लेकिन वास्तव में पूरी संरचना की प्रतिलिपि बना रहे हैं। इसलिए यदि आप एक उदाहरण को संशोधित करते हैं (आपको वैसे भी नहीं चाहिए, क्योंकि संरचना के उदाहरणों को अपरिवर्तनीय बनाने का इरादा है), दूसरे को संशोधित नहीं किया जाता है।


  • Comments

    Popular posts from this blog

    ios - Form Sheet content disappearing -

    MySql variables and php -

    php - Laravel - Overriding a resource route into a different route filter group -