सी # और वीबीएनईटी उन प्रकारों के साथ आता है जो सीएलआर प्रकारों के लिए मानचित्र हैं। उदाहरण हैं: int (सी #) और इंटीजर (वीबी) मानचित्र System.Int32, लंबे (सी #) और लांग (वीबी) मानचित्र सिस्टम.इन्ट 64 पर। अंतर्निहित प्रकारों का उपयोग करने के लिए या उनका उपयोग न करने का निर्णय लेने के लिए सर्वोत्तम अभ्यास क्या हैं (सिस्टम का उपयोग करके। * Structs/classesयों के बजाय)?अंतर्निहित प्रकार, जब (नहीं) उपयोग करने के लिए?
उत्तर
एकमात्र समय जब मैं कभी भी स्पष्ट रूप से "System.XYZ"
का उपयोग किसी अंतर्निहित प्रकार के कीवर्ड की प्राथमिकता में करता हूं, तब मुझे एक विशिष्ट प्रकार के पूर्ण आकार की आवश्यकता होती है, और मैं चाहता हूं कि यह मेरे कोड को पढ़ने वाले किसी के लिए स्पष्ट हो (उदाहरण के लिए I Int32
बजाय int
उपयोग कर सकते हैं, तो सवाल में पूर्णांक वास्तव में 4 8 बिट क्षेत्रों एक साथ पैक है।)
भाषा प्रकार (उदाहरण के लिए स्ट्रिंग, पूर्णांक, चार) कर रहे हैं बस उपनाम CLR प्रकार के लिए (System.String, सिस्टम .t32, System.Char)
वे एक दूसरे के बीच एक को प्राथमिकता देने की आवश्यकता नहीं है।
संपादित
पोस्टर दोनों के बीच चयन करते समय, बहुत अच्छी तरह से में कुछ मदद के लिए कहा।
व्यक्तिगत तौर पर मैं करते हैं सी # भाषा प्रकार (पूर्णांक, स्ट्रिंग, चार आदि) का चयन करने के , क्योंकि वे कम टाइपिंग शामिल - मुझे लगता है कि मैं सिर्फ आलसी :)
दूसरे शब्दों में। वे एक ही चीज़ हैं। सोचें: स्ट्रिंग एस = "हाय"; स्ट्रिंग एस 2 = एस; एस और एस 2 एक ही स्ट्रिंग हैं। – jjnguy
@jjnguy: यह एस एंड एस 2 के मूल्यों के बराबर नहीं है, मानों को अनदेखा करें। मैं कह रहा हूं कि मान रखने वाले मान (मान नहीं) समान हैं। यानी स्ट्रिंग एस 1 = "हैलो"; सिस्टम। स्ट्रिंग एस 2 = "वर्ल्ड"; एस 1 वही प्रकार है जो एस 2 के रूप में है, इस तथ्य के बावजूद कि उनके मूल्य अलग हैं। –
मैं लगभग हमेशा अंतर्निहित का उपयोग कर रहा हूँ उपनामों में, जैसे int/short/long। उन्हें पढ़ने में आसान है, और आपको सिस्टम आयात करने या सिस्टम.इन्ट 32 टाइप करने की आवश्यकता नहीं है, आदि
भाषा स्पष्ट रूप से उन्हें परिभाषित करती है, और उन्हें एक विशिष्ट अर्थ देती है, इसलिए मुझे कोई नुकसान नहीं दिखता है। हालांकि, यह 100% व्यक्तिगत पसंद है।
कहा जा रहा है - एक जगह जहां मैं स्पष्ट रूप से Int32, Int16, आदि का उपयोग करता हूं, यह है कि यदि मैं बाइनरी स्टोरेज या स्थानांतरण से निपट रहा हूं, खासकर कस्टम बाइनरी प्रारूप से या उससे। इस मामले में, फ़ाइल के अंदर और बाहर जाने वाले प्रत्येक सदस्य के स्पष्ट बिटसाइट को कोड को और अधिक पठनीय और समझने योग्य, आईएमओ बनाता है।
"int" और "Int32" (और अन्य) का उपयोग बिल्कुल समान है। विशिष्टता कीवर्ड (int, Integer (vb.net), bool, आदि ...) का उपयोग किया जाता है, क्योंकि यह छोटा है और आईडीई में उच्च है।
मैं हमेशा System.*
प्रकारों का उपयोग करता हूं क्योंकि वे अन्य वर्गों के बीच अधिक संगत दिखते हैं - ऊपरी केस पहले अक्षर और समान वाक्यविन्यास हाइलाइटिंग। लेकिन यह सिर्फ एक व्यक्तिगत वरीयता है और सिर्फ एक सौंदर्य मुद्दा है।
स्पष्ट बीसीएल कक्षा के नामों के विरुद्ध भाषा प्रकारों का उपयोग या उपयोग करने के बजाय, यह जानना अधिक महत्वपूर्ण है कि आप जिस प्रकार का उपयोग करना चाहते हैं वह सीएलएस अनुपालन है या नहीं।
विशेष रूप से, हस्ताक्षरित पूर्णांक प्रकार सीएलएस अनुपालन नहीं हैं क्योंकि कोई आवश्यकता नहीं है कि एक भाषा समर्थन हस्ताक्षर पूर्णांक गणित।
इस झुर्रियों के अलावा ... मैं अनुशंसा करता हूं कि जो भी मुहावरे आपके संगठन कोड प्रथाओं को ध्यान में रखते हुए अधिक हो। यदि आप अपने प्रकार के संदर्भों को पूरी तरह से नामांकित करते हैं, तो मैं सिस्टम के साथ उस पैटर्न को जारी रखूंगा। * नेमस्पेस ... (मैं उस अभ्यास के खिलाफ भी सिफारिश करता हूं, क्योंकि यह स्पष्टता में उपस्थित लाभ के बिना पाठक लोड जोड़ता है)।
और 6 साल बाद: स्टाइलकॉप नियमसेट का कहना है कि बिल्टिन का उपयोग करें। –
- 1. जब उपयोग करने के लिए!() या! = जब नहीं तो अशक्त
- 2. अंतर्निहित प्रकार
- 3. प्रतिबिंब: अंतर्निहित प्रकार के बाय-रेफ प्रकार
- 4. अंतर्निहित प्रकार को enums में निर्दिष्ट करने के लिए उपयोग-केस क्या है?
- 5. कोई अपवाद प्रकार का उपयोग करने के लिए जब कोई संपत्ति शून्य नहीं हो सकती है?
- 6. अंतर्निहित रूप से प्रकार 'दशमलव' को परिवर्तित नहीं कर सकता? 'दशमलव' करने के लिए।
- 7. टाइपस्क्रिप्ट: अंतर्निहित प्रकार
- 8. अजगर: प्रकार ऑटो निष्क्रिय करने के लिए कैसे जब शब्दकोश
- 9. अंतर्निहित/व्युत्पन्न प्रकार के enum प्राप्त करें?
- 10. वीबीएनईटी अंतर्निहित सिस्टम प्राप्त करें। टाइप करने योग्य प्रकार
- 11. एंड्रॉइड लिस्टव्यू व्यूहोल्डर। जब यह उपयोग करने के लिए, और जब नहीं
- 12. अंतर्निहित रूप से प्रकार बूल को परिवर्तित नहीं कर सकता?
- 13. int करने के लिए प्रकार 'System.Enum' कनवर्ट नहीं कर सकता
- 14. हास्केल में कोई अंतर्निहित सेट डेटा प्रकार क्यों नहीं है?
- 15. त्रुटि प्राप्त हुई "अंतर्निहित टाइप किए गए सरणी के लिए कोई सर्वश्रेष्ठ प्रकार नहीं मिला"
- 16. एसओए बनाम MVC - जब उपयोग करने के लिए
- 17. अजीब प्रकार मेल नहीं खाता जब निकालने
- 18. जब के बजाय ओवरराइड सी # नई उपयोग करने के लिए
- 19. जब उपयोग करने के लिए या Django ORM में इटरेटर का उपयोग नहीं()
- 20. स्काला अंतर्निहित उपयोग विकल्पों
- 21. Laravel - जब उपयोग करने के लिए -> मिल()
- 22. जब सी # में ताला धागा उपयोग करने के लिए?
- 23. जब Global.asax में बनाम Init Application_Start उपयोग करने के लिए?
- 24. कैसे DISTINCT उपयोग करने के लिए जब मैं एसक्यूएल सर्वर
- 25. जब उपयोग करने के लिए WCF दोष अपवाद
- 26. अंतर्निहित कंटेनर के लिए कस्टम तुलना
- 27. अंतर्निहित प्रकारों के लिए जेनेरिक इवेंट एरग
- 28. 2 मानकों के साथ प्रकार के लिए प्रकार स्तरीय उदाहरण है जब प्रकार श्रेणी केवल एक
- 29. टोस्ट बनाम संवाद बॉक्स: जब उपयोग करने के लिए?
- 30. जब में ऑब्जेक्टिव-सी respondsToSelector उपयोग करने के लिए
मैंने शॉन का जवाब चुना क्योंकि यह मुझे दो विकल्पों के बीच चयन करने के ठोस आधार प्रदान करता है।अन्य उत्तर केवल राज्य "यह बराबर है, या तो उपयोग करें" - यह वास्तव में सहायक नहीं है, आईएमओ। अगर मैं दूसरा सबसे अच्छा जवाब चुन सकता हूं, तो यह रीड होगा। वैसे भी, चूंकि लोग शिकायत कर रहे हैं, इसलिए मैं और जवाब आने दूंगा ... –