यदि कोई सी में असुरक्षित structs के अंदर बाल structs के लिए पॉइंटर्स की एक सरणी डाल सकता है जैसे कि सी में हो सकता है, प्रति ऑब्जेक्ट एक ऑब्जेक्ट रखने के ऊपरी हिस्से के बिना जटिल डेटा संरचनाओं का निर्माण करना बहुत आसान और कम समय के सिंक के रूप में होगा, अच्छी तरह से वाक्य रचनात्मक रूप से क्लीनर और अधिक पढ़ने योग्य।सी # में असुरक्षित structs में पॉइंटर्स के सरणी डालने में सक्षम नहीं होने के अंतर्निहित कारण क्या हैं?
क्या कोई गहरा आर्किटेक्चरल कारण है कि असुरक्षित structs के अंदर निश्चित सरणी केवल "मूल्य प्रकार" से बने होने की अनुमति है और पॉइंटर्स नहीं?
मुझे लगता है कि केवल संरचनाओं के अंदर स्पष्ट रूप से नामित पॉइंटर्स होने के कारण भाषा को कमजोर करने का एक जानबूझकर निर्णय होना चाहिए, लेकिन मुझे ऐसा क्यों नहीं है, या ऐसा क्यों नहीं है कि पॉइंटर एरे को structs के अंदर अनुमति न दें, क्योंकि मैं कचरा कलेक्टर को लगता है कि असुरक्षित के रूप में चिह्नित structs में क्या चल रहा है परवाह नहीं करना चाहिए।
डिजिटल मंगल डी डी तुलनात्मक रूप से सुराग और पॉइंटर्स की तुलना में सुदृढ़ रूप से हैंडल करता है, और मुझे लगता है कि संक्षिप्त डेटा संरचनाओं को तेजी से विकसित करने में सक्षम नहीं है; सी # में संदर्भ अमूर्त बनाकर, बहुत सारी शक्ति भाषा से हटा दी गई है, भले ही पॉइंटर्स कम से कम मार्केटिंग भावना में हों।
शायद मैं समय के साथ जटिल डेटा संरचनाओं का प्रतिनिधित्व करने के लिए भाषाओं को और अधिक शक्तिशाली बनने की उम्मीद कर रहा हूं।
क्या प्रोफाइलर आप सुझाव है? – cons
यह कारण नहीं हो सकता है, क्योंकि आप असुरक्षित संरचनाओं के अंदर अन्य असुरक्षित संरचनाओं के पॉइंटर्स का बहुत अच्छी तरह से उपयोग कर सकते हैं (इस तरह बाइनरी पेड़ संरचना बनाने में कोई समस्या नहीं है ...) प्रतिबंध केवल असुरक्षित structs के अंदर सरणी पर लागू होता है (जिसे निश्चित कहा जाता है आकार बफर), और इसका कारण मेरी राय में स्पष्ट नहीं है (संभावित स्पष्टीकरण के लिए मेरी प्रतिक्रिया देखें) – MartinStettner
@cons: यह प्रश्न देखें: http://stackoverflow.com/questions/3927/ –