2009-05-26 8 views
7

सी # और वीबीएनईटी उन प्रकारों के साथ आता है जो सीएलआर प्रकारों के लिए मानचित्र हैं। उदाहरण हैं: int (सी #) और इंटीजर (वीबी) मानचित्र System.Int32, लंबे (सी #) और लांग (वीबी) मानचित्र सिस्टम.इन्ट 64 पर। अंतर्निहित प्रकारों का उपयोग करने के लिए या उनका उपयोग न करने का निर्णय लेने के लिए सर्वोत्तम अभ्यास क्या हैं (सिस्टम का उपयोग करके। * Structs/classesयों के बजाय)?अंतर्निहित प्रकार, जब (नहीं) उपयोग करने के लिए?

+0

मैंने शॉन का जवाब चुना क्योंकि यह मुझे दो विकल्पों के बीच चयन करने के ठोस आधार प्रदान करता है।अन्य उत्तर केवल राज्य "यह बराबर है, या तो उपयोग करें" - यह वास्तव में सहायक नहीं है, आईएमओ। अगर मैं दूसरा सबसे अच्छा जवाब चुन सकता हूं, तो यह रीड होगा। वैसे भी, चूंकि लोग शिकायत कर रहे हैं, इसलिए मैं और जवाब आने दूंगा ... –

उत्तर

14

एकमात्र समय जब मैं कभी भी स्पष्ट रूप से "System.XYZ" का उपयोग किसी अंतर्निहित प्रकार के कीवर्ड की प्राथमिकता में करता हूं, तब मुझे एक विशिष्ट प्रकार के पूर्ण आकार की आवश्यकता होती है, और मैं चाहता हूं कि यह मेरे कोड को पढ़ने वाले किसी के लिए स्पष्ट हो (उदाहरण के लिए I Int32 बजाय int उपयोग कर सकते हैं, तो सवाल में पूर्णांक वास्तव में 4 8 बिट क्षेत्रों एक साथ पैक है।)

15

भाषा प्रकार (उदाहरण के लिए स्ट्रिंग, पूर्णांक, चार) कर रहे हैं बस उपनाम CLR प्रकार के लिए (System.String, सिस्टम .t32, System.Char)

वे एक दूसरे के बीच एक को प्राथमिकता देने की आवश्यकता नहीं है।

संपादित

पोस्टर दोनों के बीच चयन करते समय, बहुत अच्छी तरह से में कुछ मदद के लिए कहा।

व्यक्तिगत तौर पर मैं करते हैं सी # भाषा प्रकार (पूर्णांक, स्ट्रिंग, चार आदि) का चयन करने के , क्योंकि वे कम टाइपिंग शामिल - मुझे लगता है कि मैं सिर्फ आलसी :)

+0

दूसरे शब्दों में। वे एक ही चीज़ हैं। सोचें: स्ट्रिंग एस = "हाय"; स्ट्रिंग एस 2 = एस; एस और एस 2 एक ही स्ट्रिंग हैं। – jjnguy

+0

@jjnguy: यह एस एंड एस 2 के मूल्यों के बराबर नहीं है, मानों को अनदेखा करें। मैं कह रहा हूं कि मान रखने वाले मान (मान नहीं) समान हैं। यानी स्ट्रिंग एस 1 = "हैलो"; सिस्टम। स्ट्रिंग एस 2 = "वर्ल्ड"; एस 1 वही प्रकार है जो एस 2 के रूप में है, इस तथ्य के बावजूद कि उनके मूल्य अलग हैं। –

37

मैं लगभग हमेशा अंतर्निहित का उपयोग कर रहा हूँ उपनामों में, जैसे int/short/long। उन्हें पढ़ने में आसान है, और आपको सिस्टम आयात करने या सिस्टम.इन्ट 32 टाइप करने की आवश्यकता नहीं है, आदि

भाषा स्पष्ट रूप से उन्हें परिभाषित करती है, और उन्हें एक विशिष्ट अर्थ देती है, इसलिए मुझे कोई नुकसान नहीं दिखता है। हालांकि, यह 100% व्यक्तिगत पसंद है।

कहा जा रहा है - एक जगह जहां मैं स्पष्ट रूप से Int32, Int16, आदि का उपयोग करता हूं, यह है कि यदि मैं बाइनरी स्टोरेज या स्थानांतरण से निपट रहा हूं, खासकर कस्टम बाइनरी प्रारूप से या उससे। इस मामले में, फ़ाइल के अंदर और बाहर जाने वाले प्रत्येक सदस्य के स्पष्ट बिटसाइट को कोड को और अधिक पठनीय और समझने योग्य, आईएमओ बनाता है।

2

"int" और "Int32" (और अन्य) का उपयोग बिल्कुल समान है। विशिष्टता कीवर्ड (int, Integer (vb.net), bool, आदि ...) का उपयोग किया जाता है, क्योंकि यह छोटा है और आईडीई में उच्च है।

5

मैं हमेशा System.* प्रकारों का उपयोग करता हूं क्योंकि वे अन्य वर्गों के बीच अधिक संगत दिखते हैं - ऊपरी केस पहले अक्षर और समान वाक्यविन्यास हाइलाइटिंग। लेकिन यह सिर्फ एक व्यक्तिगत वरीयता है और सिर्फ एक सौंदर्य मुद्दा है।

1

स्पष्ट बीसीएल कक्षा के नामों के विरुद्ध भाषा प्रकारों का उपयोग या उपयोग करने के बजाय, यह जानना अधिक महत्वपूर्ण है कि आप जिस प्रकार का उपयोग करना चाहते हैं वह सीएलएस अनुपालन है या नहीं।

विशेष रूप से, हस्ताक्षरित पूर्णांक प्रकार सीएलएस अनुपालन नहीं हैं क्योंकि कोई आवश्यकता नहीं है कि एक भाषा समर्थन हस्ताक्षर पूर्णांक गणित।

इस झुर्रियों के अलावा ... मैं अनुशंसा करता हूं कि जो भी मुहावरे आपके संगठन कोड प्रथाओं को ध्यान में रखते हुए अधिक हो। यदि आप अपने प्रकार के संदर्भों को पूरी तरह से नामांकित करते हैं, तो मैं सिस्टम के साथ उस पैटर्न को जारी रखूंगा। * नेमस्पेस ... (मैं उस अभ्यास के खिलाफ भी सिफारिश करता हूं, क्योंकि यह स्पष्टता में उपस्थित लाभ के बिना पाठक लोड जोड़ता है)।

+0

और 6 साल बाद: स्टाइलकॉप नियमसेट का कहना है कि बिल्टिन का उपयोग करें। –

संबंधित मुद्दे