2010-10-22 16 views
21

जहां तक ​​मेरा बता सकते हैं, String या Int32 की तरह एक वर्ग के किसी भी स्थिर सदस्य भी संबंधित आदिम डेटा प्रकार से पहुँचा जा सकता। तो, String.Formatstring.Format जैसा ही है, और Int32.MaxValueint.MaxValue जैसा ही है।String.Format और string.Format (और आदिम डेटा प्रकारों के अन्य स्थिर सदस्यों) के बीच क्या अंतर है?

क्या इन दोनों रूपों के बीच कोई अंतर है? क्या कोई दूसरे को पसंद करता है? भले ही वे समान हैं, क्या आमतौर पर एक अधिक पठनीय माना जाता है?

संपादित करें: के बाद से वे समान हैं, एक एक मानवीय दृष्टिकोण से पसंद किया जाता है? क्या आप किसी और के कोड को पढ़ते समय String.Format या string.Format देखेंगे?

उत्तर

38

वहाँ कोई अंतर नहीं है, इन सी # में टाइप उपनाम नेट ढांचे प्रकार के लिए, आप एक ही विधि के नीचे कॉल कर रहे हैं।

उदाहरण के लिए:

  • int के लिए System.Int32
  • string एक उपनाम है System.String

You can find a complete list of these aliases on MSDN here के लिए एक उपनाम है।

+0

कूल, मुझे यह पसंद है। लिंक के लिए धन्यवाद! –

+0

@ मैथ्यू - आपका स्वागत है :) –

+1

जब मैं सी # सीख रहा था, तो मैं थोड़ा उलझन में था कि क्यों 'स्ट्रिंग' और 'स्ट्रिंग' दोनों अस्तित्व में थे। इससे मुझे चीजों को तोड़ने में मदद मिली जब मुझे एहसास हुआ कि अगर मैंने 'सिस्टम का उपयोग करके' लाइन हटा दी है; कि 'स्ट्रिंग' एक अवैध प्रकार बन गया। – Detmar

4

वे समान हैं। string और intString और Int32 क्रमशः के लिए वाक्यात्मक उपनाम कर रहे हैं।

2

स्ट्रिंग एक आदिम प्रकार लेकिन बस स्ट्रिंग के लिए एक उपनाम नहीं है। वे एक जैसी ही चीज हैं।

11

उन नहीं संबंधित आदिम डेटा प्रकार हैं। वे सी # में आसानी से उपलब्ध हैं। string उपनाम System.String और int उपनाम System.Int32int.MaxValueपर कॉलInt32.MaxValue पर कॉल करते हैं। सी # बस आपको शॉर्टेंड में टाइप करने की इजाजत देता है जो आप टाइप करेंगे यदि आप किसी अन्य सी-जैसी भाषा में थे।

3

ध्यान दें कि अगर आप अपने आईडीई में जाकर string पर अपना माउस होवर, आप देखेंगे कि यह System.String

यह एक "उर्फ" है द्वारा परिभाषित किया गया है देखेंगे ... एक बात एक और बात के लिए आशुलिपि है । int इंट 32 के लिए उपनाम है, बाइट बाइट के लिए एक उपनाम है, चार चार के लिए उपनाम है, और इसी तरह से आगे।

8

अधिकांश उत्तरों में यह सामान्य है। हालांकि, कुछ ऐसे मामले हैं जिनमें उपनाम की आवश्यकता है। मेरे सिर के ऊपर बंद:

public enum MyEnum:Byte {...} //will not compile 

public enum MyEnum:byte {...} //correct 

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

  • उपयोग अन्य नाम (लोअरकेस कीवर्ड))
  • स्थिर संदर्भ में प्रकार के सभी उपयोगों के लिए प्रकार का नाम (पास्कलकेज्ड क्लास पहचानकर्ता) का उपयोग करें (पार्सर्स या स्ट्रिंग मैनिपुलेशन विधियों जैसे स्थैतिक विधियों को कॉल करना, या मिनीवैल्यू/मैक्सवैल्यू जैसे स्थिर गुण)।
3

उनकी अदला-बदली के लिए एक मजेदार सबूत आईडीई स्वयं है।
List<String> list = new टाइप करना प्रारंभ करें, फिर IntelliSense के सुझाव को देखें: List<string>। यह आपको विकल्पों में से एक के रूप में List<String> भी नहीं देगा।

  • चमकदार नीली रंग अधिक निश्चित है और यदि आप कर रहे हैं:

    अपने प्रश्न है, जो एक राय बात है, मैं कई कारणों से int और string अपर-केस से अधिक पसंद करते हैं के दूसरे भाग का उत्तर देने के तेजी से पढ़ने कोड आप कुछ और

  • कम मैं SHIFT + कुंजी हिट करने की जरूरत है, तेजी से मैं टाइप के लिए वर्ग के नाम गलती नहीं कर सकते
  • IntelliSense होगा स्वत: पूर्ण लोअर केस के नाम, भले ही आप अपरकेस के साथ शुरू , तो मेरे लिए यह ऊपरी और निचले मामले के विपरीत देखने के लिए सौंदर्यपूर्ण रूप से अप्रिय है उसी पंक्ति में एक ही कक्षा के एनएस, या यहां तक ​​कि एक ही प्रोजेक्ट में
  • प्रकार int प्रकृति में बहुत ही सरल है, और मैं अपनी आंखों को एक ऊपरी केस अक्षर और दो अंकों के साथ जोड़ने के लिए मजबूर करना चाहता हूं इसका नाम (यानी Int32); यह कोई स्पष्ट कारण

मेरा एक सहयोगी ने विशेष रूप से उपयोग करते हुए कहा Int32 और String भविष्य नेट अपडेट के साथ संगतता सुनिश्चित करता है के लिए भी विशिष्ट देखो बनाता है; मैं जो भी कहता हूं उससे असहमत हूं। मुझे गलत साबित करें, कृपया!