मैं कुछ क्षेत्रों के साथ एक struct है किया जाना है। खेतों में से एक सामान्य प्रकार का है। सामान्य प्रकार या तो संदर्भ प्रकार या मान प्रकार हो सकता है।एक (सामान्य) मान प्रकार जबरदस्ती एक संदर्भ
मैं मजबूर करने के लिए है कि यह एक संदर्भ के रूप में आंतरिक रूप से संग्रहीत किया जाता है, कि struct बहुत बड़ा हो जाता है से बचना चाहते हैं।
struct Foo<T>
{
T field; // should be a reference
}
मैं मैं object
या T[]
इस्तेमाल कर सकते हैं पता है, लेकिन दोनों अजीब है। क्या सामान्य संदर्भ प्रकार की तरह कुछ नहीं है?
struct Foo<T>
{
Reference<T> field;
}
हाँ, निश्चित रूप से, मैं अपना खुद का लिख सकता हूं। पर मैं से बचने के लिए कि
मुझे समझ में नहीं आता कि यह समस्या कैसे हल करता है। मान लीजिए एस एक बड़ा मूल्य प्रकार है। फिर फू
* एस के रूप में एक ही आकार * यदि उपयोगकर्ता तो क्यों वे भी फूके प्रदर्शन से लगता है नहीं होगा एस के प्रदर्शन के साथ ठीक है? बॉक्सिंग एस - चाहे आप ऑब्जेक्ट या अपनी खुद की कस्टम मुक्केबाजी कक्षा के साथ बॉक्स - कुल मिलाकर * अधिक * स्थान का उपयोग करेंगे क्योंकि आपको बॉक्स के लिए एस * और * स्पेस के उदाहरण के लिए स्थान होना होगा। मुक्केबाजी एस का उपयोग करेगा * अधिक * समय है क्योंकि यह एक संदर्भ प्रकार में बॉक्स करने के समय और Unbox एस –और एस रखने लेता है तो उनके के एक बहुत हैं कचरा कलेक्टर को काफी दबाव जोड़ देगा। क्या आप समझा सकते हैं कि आपको ऐसा क्यों लगता है कि यह किसी भी तरह की जीत है, क्योंकि ऐसा लगता है कि मुझे एक बुरी स्थिति बनाने की तरह लगता है - यानी, एक बड़ी संरचना की लागत लागत - बहुत दूर है। –
@Eric: मैं नहीं चाहता कि संरचना बड़ी हो जाए। मेमोरी उपयोग में structs छोटे होना चाहिए। इस संरचना में अन्य क्षेत्र हैं और यह पहले से ही ऊपरी सीमा पर है। यदि टी एक ग्रिड या एक बड़ा मूल्य प्रकार होगा, तो परिणामी संरचना बड़ी होगी। –