2010-03-01 23 views
9

यह कुछ हद तक मामूली हो सकता है, लेकिन सी # में आप एक चर में नेटवर्क पोर्ट संग्रहीत करते समय int या UInt16 पसंद करते हैं? नेटवर्क पोर्ट से निपटने के दौरान फ्रेमवर्क कक्षाएं int का उपयोग करती हैं हालांकि UInt16 वास्तव में वैध मानों का प्रतिनिधित्व करता है।क्या मुझे int या UInt16 का उपयोग करना चाहिए?

उत्तर

8

पर हस्ताक्षर किए (int/short आदि, uint/ushort बल्कि कि) सीएलएस आज्ञाकारी होने का लाभ है, तो यह है कि जब तक आप एक अच्छा कारण है की सिफारिश की है।

पुन int बनाम short - ज्यादातर मामलों में यह बाद से सभी ऑपरेटरों इस के लिए अनुकूलित कर रहे हैं, int (या uint) के साथ गणना को अधिक सक्षम है। यदि आप केवल इसे संग्रहीत और पुनर्प्राप्त कर रहे हैं तो यह निश्चित रूप से कोई मुद्दा नहीं है।

+0

मेरा मानना ​​है कि हस्ताक्षर किए गए प्रकार सीएलएस अनुरूप 2.0 के साथ शुरू होते हैं। लंबे समय से देखा क्योंकि मैंने इसे देखा हालांकि मैं गलत हो सकता था। – JaredPar

+0

@ जेरेडपायर - विचित्र रूप से, 'ushort' चेतावनी नहीं उठाता है, लेकिन' uint' करता है (VS2008 का उपयोग करके): "चेतावनी तर्क प्रकार 'uint' सीएलएस-अनुरूप नहीं है" –

+0

@ जेरेडपार - भी, एमएसडीएन " यह एपीआई सीएलएस-अनुरूप नहीं है। सीएलएस-अनुरूप विकल्प Int32 है। " http://msdn.microsoft.com/en-us/library/system.uint16.aspx (यह भी कहता है कि 4.0 के लिए) –

0

यदि आपके पास 32 बिट प्रोसेसर है और आप 16 बिट मान (स्मृति अर्थव्यवस्था के लिए) का उपयोग करेंगे, तो इसे 32 बिट के साथ गठबंधन किया जाएगा। तो मुझे लगता है कि यह 32 बिट मूल्य के बजाय 16 बिट यूंट का इतना महत्वपूर्ण उपयोग नहीं है।

+1

निश्चित रूप से एक सरणी को छोड़कर। –

+0

हाँ यह सही है – tga

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