सी # structs में मूल्य प्रकार हैं, लेकिन मैं new
उन्हें सक्षम कर सकता हूं जैसे कि वे संदर्भ प्रकार हैं। ऐसा क्यों है?यदि कोई संरचना एक मान प्रकार है तो मैं इसे नया क्यों कर सकता हूं?
उत्तर
क्योंकि उनके पास रचनाकार हैं।
new
operator का मतलब यह नहीं है कि "यह एक संदर्भ प्रकार है"; इसका मतलब है "इस प्रकार में एक निर्माता है"। जब आप new
कुछ उदाहरण बनाते हैं, और ऐसा करने में आप एक कन्स्ट्रक्टर का आह्वान करते हैं।
उस मामले के लिए, सभी मूल्य और संदर्भ प्रकारों में रचनाकार हैं (कम से कम एक डिफ़ॉल्ट कन्स्ट्रक्टर कोई तर्क नहीं लेता है यदि प्रकार स्वयं किसी भी परिभाषित नहीं करता है)।
यह एमएसडीएन दस्तावेज़ में here सही कहता है, new
ऑपरेटर का उपयोग मूल्य प्रकार के डिफ़ॉल्ट कन्स्ट्रक्टर का आह्वान करने के लिए किया जाता है।
आपको संरचना बनाने के लिए नए ऑपरेटर का उपयोग करने की आवश्यकता नहीं है। यदि आप ऐसा करते हैं तो यह अपने कन्स्ट्रक्टर को कॉल करेगा, अगर आप सभी फ़ील्ड को असाइन नहीं किया जाएगा।
new
ऑपरेटर का मतलब यह नहीं है कि इसका उपयोग केवल संदर्भ प्रकार के लिए किया जा सकता है। इसका उपयोग मूल्य प्रकार के साथ भी किया जा सकता है।
वस्तुओं और आह्वान कंस्ट्रक्टर्स बनाने के लिए प्रयोग किया जाता है से।
के बाद से हर मान प्रकार परोक्ष एक सार्वजनिक डिफ़ॉल्ट निर्माता है, सभी मूल्य प्रकार मूलभूत मूल्यों है। आप Default Values Table पढ़ सकते हैं।
उदाहरण के लिए;
int i = new int(); // i will be 0 for because its default values.
संरचना प्रकार के लिए डिफ़ॉल्ट मान;
MSDN सेमूल्य अशक्त को उनके डिफ़ॉल्ट मूल्यों और सभी संदर्भ प्रकार क्षेत्रों करने के लिए सभी प्रकार के मूल्य क्षेत्रों की स्थापना द्वारा उत्पादन किया।
इसके अलावा:
आप नए ऑपरेटर का उपयोग कर एक struct वस्तु बनाते हैं, यह बनाया जाता है और उचित निर्माता कहा जाता है। कक्षाओं के विपरीत, नए ऑपरेटर का उपयोग किए बिना structs को तत्काल किया जा सकता है। यदि आप नया उपयोग नहीं करते हैं, तो फ़ील्ड असाइन नहीं किए जाएंगे और ऑब्जेक्ट तब तक उपयोग नहीं किया जा सकता जब तक कि सभी फ़ील्ड प्रारंभ नहीं हो जाते।
+1 जितनी जल्दी हो सके। शायद '(v = vs.71) 'भाग को हटा दें? –
इसे सही देखें, लेकिन +2 में असमर्थ .. –
आप एक पूर्णांक "नया" भी कर सकते हैं।
अंतर यह है कि आप मूल्य द्वारा संदर्भ वर्ग को पास कर सकते हैं।
- 1. यदि कोई रेंज के भीतर कोई मान है तो मैं कैसे परीक्षण कर सकता हूं?
- 2. यदि मैं किसी मान को किसी निश्चित प्रकार में परिवर्तित कर सकता हूं तो
- 3. यदि मूल्य शून्य है तो मैं एक sqldatareader को मान कैसे वापस कर सकता हूं?
- 4. यदि मॉडलस्टेट में कोई कुंजी मौजूद नहीं है, तो मैं इसे कैसे जोड़ सकता हूं? aspnetmvc1
- 5. यदि कोई फ़ंक्शन एक इंटरेस्ट लौटाता है, तो क्या इसे एक इंट सौंपा जा सकता है?
- 6. मोंगोडीबी - यदि नया मान अधिक है तो अपडेट फ़ील्ड
- 7. जब मैं एक नया रिकॉर्ड डालता हूं तो प्राथमिक प्राथमिक मूल्य कैसे प्राप्त कर सकता हूं?
- 8. पावरहेल - यदि कोई प्रक्रिया नहीं चल रही है, तो इसे
- 9. क्या मैं एक आईएनटी मान + 1 अपडेट कर सकता हूं और नया मान वापस कर सकता हूं?
- 10. यदि रेंज() पायथन 3.3 में जनरेटर है, तो मैं एक सीमा पर अगला() क्यों नहीं कॉल कर सकता हूं?
- 11. यदि कोई सीके संपादक फ़ील्ड खाली है तो मैं कैसे परीक्षण कर सकता हूं
- 12. सी ++ दौर में सेटप्रिजन है? यदि ऐसा है तो मैं इसे क्यों देख रहा हूं?
- 13. यदि मैं सी ++ में एक थ्रेड में स्मृति आवंटित करता हूं, तो क्या मैं इसे
- 14. मैं किसी संदर्भ के लिए एक नया मान क्यों निर्दिष्ट कर सकता हूं, और मैं किसी संदर्भ को संदर्भित कैसे कर सकता हूं?
- 15. Mongoid, यदि कोई मान सेट किया गया है तो दायरा?
- 16. यदि मैं एक IQueryable से चुनता हूं तो शामिल है
- 17. मैं SQLServer SELECT कथन से एक नया पहचान कॉलम मान कैसे वापस कर सकता हूं?
- 18. यदि इनपुट मान रिक्त है, तो जावास्क्रिप्ट
- 19. vshost.exe मेरा .dll accesing रहता है और जब मैं इसे बनाता हूं तो मैं इसे अपडेट नहीं कर सकता
- 20. यदि प्राथमिकता वापस आती है तो मैं प्राथमिकता बाइंडिंग कैसे विफल कर सकता हूं?
- 21. यदि टीएक्स एक प्रोग्रामिंग भाषा है, तो मैं टीएक्स में प्रोग्रामिंग कैसे शुरू कर सकता हूं?
- 22. यदि मैं पहले से मौजूद हूं तो Django-Tastypie संसाधन को ओवरराइड कैसे कर सकता हूं?
- 23. पायथन: यदि कोई नया नियम
- 24. यदि कोई सरणी 0 (या झूठी) है तो क्या मैं सी (++) में जांच सकता हूं?
- 25. गुलप में, यदि मैं एकाधिक फाइलों में से कोई भी नया हूं तो मैं केवल एक फ़ाइल पर एक कार्य कैसे चला सकता हूं?
- 26. यदि मैं उपयोग करता हूं तो क्या हो सकता है: बिना_protection => रेल में एक नया मॉडल बनाते समय सच?
- 27. यदि पैरामीटर पूर्णांक नहीं है तो मैं मार्ग को अलग-अलग कैसे परिभाषित कर सकता हूं
- 28. यदि मैं इसे सी में पॉइंटर के माध्यम से संशोधित कर सकता हूं तो कॉन्स्ट क्वालीफायर का उद्देश्य क्या है?
- 29. यदि मैं दो jQuery लिपटे डीओएम तत्व समान हैं तो मैं कैसे परीक्षण कर सकता हूं?
- 30. यदि कोई आइटम समूह में कोई आइटम है तो मैं एमएसबिल्ड कंडीशन परीक्षण कैसे कर सकता हूं?
एक कन्स्ट्रक्टर वास्तव में केवल एक तरीका है जिसे प्रारंभिक माना जाने से पहले किसी ऑब्जेक्ट के साथ गड़बड़ करने का विशेष विशेषाधिकार प्राप्त होता है। – Tory