सवाल सी # में स्ट्रिंग और स्ट्रिंग के बीच क्या अंतर है?


उदाहरण (मामले को नोट करें):

string s = "Hello world!";
String s = "Hello world!";

वह क्या हैं दिशा निर्देशों प्रत्येक के उपयोग के लिए? और क्या हैं मतभेद?


5362


मूल


@ ओआर.मैपर, लेकिन तथ्य यह है कि string एक है शब्द-भांडार का सी # का निर्माण व्याकरण जहाँ तक System.String बस एक प्रकार है। किसी के बावजूद मुखर किसी भी spec में उल्लिखित अंतर, अभी भी इस अंतर्निहित अंतर है कि कुछ अस्पष्टता के साथ समायोजित किया जा सकता है। भाषा ही जरूर समर्थन string इस तरह से कार्यान्वयन (काफी) बीसीएल में किसी विशेष वर्ग के लिए विचार करने के लिए इतना बाध्य नहीं है। - Kirk Woll
@ किर्कवॉल: भाषा विनिर्देश के अनुसार, भाषा ही जरूर विचार करें string बिल्कुल बीसीएल प्रकार के समान होना चाहिए System.String, और कुछ नहीं। यह बिल्कुल संदिग्ध नहीं है। बेशक, आप सी # व्याकरण का उपयोग करके अपने स्वयं के कंपाइलर को कार्यान्वित कर सकते हैं, और उस तरह के सभी टोकन का उपयोग मनमाने ढंग से कुछ के लिए किया जा सकता है, जो सी # भाषा विनिर्देश में परिभाषित किया गया है उससे असंबंधित है। हालांकि, परिणामी भाषा केवल सी # लुकलीइक होगी, इसे सी # नहीं माना जा सकता है। - O. R. Mapper
आप उपयोग कर सकते हैं string सिस्टम के लिए निर्देश का उपयोग किए बिना। आप इसके साथ ऐसा नहीं कर सकते String। - Wilsu
अल्गोल और फोरट्रान से आने वाले किसी के लिए, इस चर्चा से पता चलता है कि इसमें कुछ गड़बड़ है string। संक्षेप में इसकी आवश्यकता है System.String, लेकिन, एक उपनाम के रूप में, यह काफी पसंद है, लेकिन बिल्कुल वही बात नहीं है। सी # के कई सालों बाद, मैं कहूंगा, बस उपयोग करना सुरक्षित है string तथा string.Format() और चिंता करने के लिए नहीं System.String। - Roland
यदि 2017 में इस तरह के प्रश्न पूछा गया था, तो उसे 4,000 डाउनवॉट, एमएसडीएन स्ट्रिंग क्लास पेज के 2,000 लिंक प्राप्त हुए होंगे, और उत्पादक के रूप में बंद नहीं होंगे। - IRGeekSauce


जवाब:


string सी # के लिए एक उपनाम है System.String
तो तकनीकी रूप से, कोई फर्क नहीं पड़ता। यह पसंद है int  बनाम  System.Int32

जहां तक ​​दिशानिर्देश हैं, आमतौर पर इसका उपयोग करने की अनुशंसा की जाती है string किसी भी समय आप किसी ऑब्जेक्ट का जिक्र कर रहे हैं।

जैसे

string place = "world";

इसी प्रकार, मुझे लगता है कि इसे आमतौर पर उपयोग करने की अनुशंसा की जाती है String यदि आपको विशेष रूप से कक्षा में संदर्भित करने की आवश्यकता है।

जैसे

string greet = String.Format("Hello {0}!", place);

यह वह शैली है जिसे माइक्रोसॉफ्ट में उपयोग करना पड़ता है उनके उदाहरण

ऐसा प्रतीत होता है कि इस क्षेत्र में मार्गदर्शन बदल सकता है, जैसा कि StyleCop अब सी # विशिष्ट उपनामों के उपयोग को लागू करता है।


5097



यदि आप StyleCop का उपयोग करने का निर्णय लेते हैं और उसका पालन करते हैं, तो वह भाषा के विशिष्ट प्रकारों का उपयोग करने के लिए कहेंगे। तो सी # के लिए आपके पास स्ट्रिंग होगी (स्ट्रिंग के बजाए), int (Int32 के बजाय), फ्लोट (सिंगल के बजाए) - stylecop.soyuz5.com/SA1121.html - Dominic Zukiewicz
मैं हमेशा उपनामों का उपयोग करता हूं क्योंकि मैंने माना है कि एक दिन यह आसान हो सकता है क्योंकि वे एक अमूर्तता के रूप में कार्य कर रहे हैं, इसलिए इसलिए उनके कार्यान्वयन मुझे बिना बताए बदल सकते हैं। - Rob
विजुअल स्टूडियो 2015 का कहना है कि स्ट्रिंग.फॉर्मेट स्ट्रिंग में बदला जाना चाहिए। फोर्मेट, तो मुझे लगता है कि माइक्रोसॉफ्ट इस तरह से जा रहा है। मैंने हमेशा स्थिर तरीकों के लिए स्ट्रिंग का भी उपयोग किया है। - Sami Kuhmonen
जैसा कि मैंने इनके माध्यम से पढ़ा है, मैंने देखा है कि कई टिप्पणियां बस गलत हैं। @ DRAirey1 समय में, आप पाएंगे कि पुराना तरीका अभी भी सबसे अच्छा है, अगर आपको संदेह है तो मैं आपको विजुअल स्टूडियो का उपयोग किए बिना सी # कोड लिखने की कोशिश करने की हिम्मत करता हूं। यह लगभग असंभव है और एक ऐसी स्थिति जो वेब विकास कार्य में समय-समय पर आती है। @Vlad आपको स्ट्रिंग का उपयोग करने के लिए कुछ भी आयात करने की आवश्यकता नहीं है। @Ahihi आपकी टिप्पणी व्यर्थ और समान रूप से सच है string.Format()। @ KlitosG नहीं, यह सच नहीं है। वे सभी बिल्कुल वही काम करते हैं। - krowe2
क्या आप एक टिप्पणी जोड़ सकते हैं कि वास्तव में, एक अंतर है? उदाहरण के लिए: nameof(string) जबकि संकलित नहीं करेंगे nameof(String) मर्जी। - Jeroen Vannevel


सिर्फ पूर्णता के लिए, यहां संबंधित जानकारी का मस्तिष्क डंप है ...

जैसा कि अन्य ने ध्यान दिया है, string के लिए एक उपनाम है System.String। वे एक ही कोड को संकलित करते हैं, इसलिए निष्पादन समय पर कोई अंतर नहीं होता है। यह सी # में उपनामों में से एक है। पूरी सूची है:

object:  System.Object
string:  System.String
bool:    System.Boolean
byte:    System.Byte
sbyte:   System.SByte
short:   System.Int16
ushort:  System.UInt16
int:     System.Int32
uint:    System.UInt32
long:    System.Int64
ulong:   System.UInt64
float:   System.Single
double:  System.Double
decimal: System.Decimal
char:    System.Char

इसके अलावा string तथा object, उपनाम सभी प्रकार के मूल्य के लिए हैं। decimal एक मूल्य प्रकार है, लेकिन सीएलआर में एक आदिम प्रकार नहीं है। एकमात्र आदिम प्रकार जिसमें उपनाम नहीं है System.IntPtr

Spec में, मान प्रकार उपनाम "सरल प्रकार" के रूप में जाना जाता है। प्रत्येक साधारण प्रकार के निरंतर मूल्यों के लिए साहित्य का उपयोग किया जा सकता है; कोई अन्य मूल्य प्रकार के शाब्दिक रूप उपलब्ध नहीं हैं। (वीबी के साथ इसकी तुलना करें, जो अनुमति देता है DateTime शाब्दिक, और इसके लिए एक उपनाम भी है।)

एक परिस्थिति है जिसमें आप है उपनामों का उपयोग करने के लिए: जब एक enum के अंतर्निहित प्रकार स्पष्ट रूप से निर्दिष्ट करते हैं। उदाहरण के लिए:

public enum Foo : UInt32 {} // Invalid
public enum Bar : uint   {} // Valid

यह सिर्फ एक बात है कि spec enum घोषणाओं को परिभाषित करता है - कोलन के बाद का हिस्सा होना चाहिए अभिन्न प्रकार उत्पादन, जो एक टोकन है sbyte, byte, short, ushort, int, uint, long, ulong, char... के विरोध में प्रकार उदाहरण के लिए परिवर्तनीय घोषणाओं द्वारा उपयोग किया जाने वाला उत्पादन। यह किसी भी अन्य अंतर का संकेत नहीं देता है।

अंत में, जब इसका उपयोग करने की बात आती है: व्यक्तिगत रूप से मैं कार्यान्वयन के लिए हर जगह उपनाम का उपयोग करता हूं, लेकिन किसी भी एपीआई के लिए सीएलआर प्रकार का उपयोग करता हूं। यह वास्तव में बहुत अधिक मायने रखता नहीं है जो आप कार्यान्वयन के मामले में उपयोग करते हैं - आपकी टीम के बीच स्थिरता अच्छी है, लेकिन कोई और देखभाल करने वाला नहीं है। दूसरी ओर, यह वास्तव में महत्वपूर्ण है कि यदि आप एक एपीआई में एक प्रकार का संदर्भ देते हैं, तो आप एक भाषा तटस्थ तरीके से ऐसा करते हैं। एक विधि कहा जाता है ReadInt32 एक संदिग्ध है, जबकि एक विधि कहा जाता है ReadInt व्याख्या की आवश्यकता है। कॉलर एक ऐसी भाषा का उपयोग कर सकता है जो एक परिभाषित करता है int के लिए उपनाम Int16, उदाहरण के लिए। .NET फ्रेमवर्क डिजाइनरों ने इस पैटर्न का पालन किया है, अच्छे उदाहरण हैं BitConverter, BinaryReader तथा Convert कक्षाएं।


3037



Enum के साथ विरासत की स्थिति दिलचस्प है। क्या आप दस्तावेजों को इंगित कर सकते हैं कि उपनामों के लिए उपनाम का उपयोग क्यों किया जाना चाहिए? या यह एक ज्ञात बग है? - JaredPar
यह spec की धारा 14.1 में है (मैं यहां आसानी से उद्धरण नहीं दे सकता क्योंकि यह बहुत लंबा है)। यह स्पष्ट रूप से नहीं कहता है कि आपको उपनाम का उपयोग करना है, लेकिन उपनाम हैं की तरह अपने स्वयं के प्रकार के रूप में माना जाता है। यह सब थोड़ा अजीब है। - Jon Skeet
@PiPeep बड़ी मात्रा में अपवॉट्स की तुलना में अधिक चौंकाने वाला क्या है, डाउनवॉट्स की चौंकाने वाली कम मात्रा है (शीर्ष 5 पदों में कुल 2000 अपवॉट्स हैं, और फिर भी उनमें से केवल 1 डाउनवोट है)। विशेष रूप से जब आप इस धारणा में कारक रखते हैं कि किसी भी समुदाय में हमेशा "नफरत" होता है, तो मुझे वास्तव में यह अविश्वसनीय लगता है। - corsiKa
बीच एक दिलचस्प अंतर string तथा String क्या वह string' is a keyword in c#, so you can not use it as a variable name.For Ex: स्ट्रिंग स्ट्रिंग = "हाय";//compiler error, but स्ट्रिंग स्ट्रिंग = "हाय"; `स्वीकार्य है, जैसा कि String एक पहचानकर्ता एक कीवर्ड नहीं है। - Sanjeev Rai
@ संजीवराई: हां। आप उपयोग कर सकते हैं @string एक पहचानकर्ता बनाने के लिए जो समाप्त होता है string हालांकि। यह एक तरह से बचने की तंत्र है। - Jon Skeet


String के लिए खड़ा है System.String और यह एक .NET फ्रेमवर्क प्रकार है। string एक उपनाम है के लिए सी # भाषा में System.String। उनमें से दोनों संकलित हैं System.String आईएल में(इंटरमीडिएट भाषा), इसलिए कोई फर्क नहीं पड़ता। चुनें कि आप क्या पसंद करते हैं और इसका उपयोग करें। यदि आप सी # में कोड करते हैं, तो मैं पसंद करूंगा string क्योंकि यह एक सी # प्रकार उपनाम है और सी # प्रोग्रामर द्वारा प्रसिद्ध है।

मैं इसके बारे में भी कह सकता हूं (int, System.Int32) आदि..


608



'यदि आप सी # में कोड करते हैं, तो मैं स्ट्रिंग पसंद करूंगा क्योंकि यह एक सी # प्रकार उपनाम है और सी # प्रोग्रामर द्वारा प्रसिद्ध है - जब एक सी # व्यक्ति .NET ढांचे को नहीं जानता। +1 जैसा कि मुझे लगता है कि आम तौर पर यह सबसे अच्छा जवाब है, लेकिन जो बिंदु मैं उल्लेख करता हूं वह अजीब लगता है। - MyDaftQuestions
मैं व्यक्तिगत रूप से "Int32" का उपयोग करना पसंद करता हूं, क्योंकि यह तुरंत मूल्य की सीमा दिखाता है। कल्पना करें कि क्या उन्होंने बाद में उच्च-बिट सिस्टम पर "int" के प्रकार को अपग्रेड किया है। सी में 'int' स्पष्ट रूप से देखा जाता है "पूर्णांक प्रकार जो लक्ष्य प्रोसेसर सबसे कुशल काम कर रहा है", और "कम से कम 16 बिट" के रूप में परिभाषित किया गया है। मैं वहां अनुमानित स्थिरता पसंद करूंगा, बहुत बहुत धन्यवाद। - Nyerguds
@MyDaftQuestions मैं सहमत हूं। अगर कुछ भी समझ में आता है लगातार .NET प्रकारों का उपयोग करें क्योंकि वे भाषा अज्ञानी हैं और किसी भी भाषा से स्वतंत्र है, (क्या मैं सभी एफ # या वीबी की idiosyncrasies पता है?)। - Peter A. Schneider


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

  • मैंने कई डेवलपर्स को उलझन में देखा है, यह जानने के लिए कि क्या उपयोग करना है या नहीं तार या तार उनके कोड में। चूंकि सी # स्ट्रिंग (एक कीवर्ड) मानचित्र में बिल्कुल सिस्टम। स्ट्रिंग (एक एफसीएल प्रकार) में कोई अंतर नहीं होता है और इसका उपयोग भी किया जा सकता है।
  • सी # में, लंबा के लिए मानचित्र System.Int64, लेकिन एक अलग प्रोग्रामिंग भाषा में, लंबा एक के लिए मानचित्र कर सकते हैं int16 या int32। वास्तव में, सी ++ / सीएलआई वास्तव में लंबे समय तक इलाज करता है int32। एक भाषा में कोई भी स्रोत कोड पढ़ने से कोड के इरादे को आसानी से गलत तरीके से परिभाषित किया जा सकता है यदि उसे किसी अन्य प्रोग्रामिंग भाषा में प्रोग्रामिंग के लिए उपयोग किया जाता है। वास्तव में, ज्यादातर भाषाएं भी इलाज नहीं करेंगे लंबा एक कीवर्ड के रूप में और इसका उपयोग करने वाले कोड को संकलित नहीं करेगा।
  • एफसीएल में कई विधियां हैं जिनके प्रकार के नाम उनके विधि नामों के हिस्से के रूप में हैं। उदाहरण के लिए, BinaryReader जैसे ऑफ़र विधियों को टाइप करें ReadBoolean, ReadInt32, ReadSingle, और इतने पर, और System.Convert जैसे ऑफ़र विधियों को टाइप करें ToBoolean, ToInt32, ToSingle, और इसी तरह। हालांकि निम्नलिखित कोड लिखना कानूनी है, फ्लोट वाली रेखा मेरे लिए बहुत अप्राकृतिक महसूस करती है, और यह स्पष्ट नहीं है कि रेखा सही है:
BinaryReader br = new BinaryReader(...);
float val  = br.ReadSingle(); // OK, but feels unnatural
Single val = br.ReadSingle(); // OK and feels good

इसलिए यह अब आपके पास है। मुझे लगता है कि ये सभी वास्तव में अच्छे अंक हैं। हालांकि, मुझे अपने कोड में जेफरी की सलाह का उपयोग करके खुद को नहीं मिला। हो सकता है कि मैं अपने सी # दुनिया में भी फंस गया हूं लेकिन मैं अपना कोड फ्रेमवर्क कोड की तरह दिखने की कोशिश कर रहा हूं।


411



दूसरा बिंदु वास्तव में एक कारण की तरह लगता है नहीं उपयोग करने के लिए string, int आदि। - MauganRa
@MauganRa और यह माना जाता है कि पुस्तक के लेखक ने उन कारणों को सूचीबद्ध किया है कि वह क्यों उपयोग नहीं करता है उपनाम। - tomi.lee.jones
"अगर कोई सी # स्रोत कोड पढ़ रहा है तो उन्हें भाषा की कल्पना के अनुसार लंबे समय तक व्याख्या करना चाहिए, न कि अन्य भाषाओं की कल्पना।" यह पूरी तरह से बिंदु याद आती है। यह कोई भी नहीं है का इरादा रखता है कोड को गलत तरीके से समझने के लिए, किसी के मस्तिष्क के गलत निष्कर्ष पर कूदना आसान होता है जब प्रोग्रामर किसी अन्य संदर्भ में दैनिक आधार पर क्या देखता है उससे भिन्न अर्थ होता है। हम सब गलतियाँ करते हैं; स्पष्ट रूप से नामित प्रकारों का उपयोग करके उन गलतियों को कम संभावना होती है। - Darryl
+ ये कारण इस मामले पर मेरी भावनाओं को जोड़ते हैं। जब मैंने पहली बार सी # में कोडिंग शुरू की (जावा / सी ++ / सी पृष्ठभूमि से आ रहा था) मैंने सोचा था कि उपनाम बदसूरत थे। मुझे अभी भी ऐसा लगता है, दुर्भाग्यवश अधिकांश दुनिया मुझसे सहमत नहीं है, या वे परवाह नहीं करते हैं, और इसलिए लोअरकेस का उपयोग करें। - gusgorman
@jinzai सवाल सी # के बारे में है, जिसमें long मंच या कंपाइलर के बावजूद, एक हस्ताक्षरित 64-बिट पूर्णांक के रूप में परिभाषित किया गया है। तो कुछ मामलों में कम से कम, हाँ, यह कर देता है भाषा पर निर्भर करता है। - phoog


string एक आरक्षित शब्द है, लेकिन String सिर्फ एक वर्ग का नाम है। इस का मतलब है कि string एक चर नाम के रूप में इस्तेमाल नहीं किया जा सकता है।

अगर किसी कारण से आप एक चर नामक चाहते थे तार, आप केवल इन संकलनों में से पहला देखेंगे:

StringBuilder String = new StringBuilder();  // compiles
StringBuilder string = new StringBuilder();  // doesn't compile 

यदि आप वास्तव में एक परिवर्तनीय नाम चाहते हैं तार आप उपयोग कर सकते हैं @ एक उपसर्ग के रूप में:

StringBuilder @string = new StringBuilder();

एक और महत्वपूर्ण अंतर: स्टैक ओवरफ़्लो उन्हें अलग-अलग हाइलाइट करता है।


380



ध्यान रखें कि स्थानीय को बुलाओ @string वास्तव में बल्कि व्यर्थ है, क्योंकि स्थानीय लोगों के नाम केवल पीडीबी में मौजूद हैं। साथ ही इसे कॉल भी कर सकते हैं _string या कुछ और। यह उन चीजों के लिए अधिक समझ में आता है जिनके नाम प्रतिबिंब के माध्यम से सुलभ होते हैं, जहां नाम का नाम होता है @string सदस्य होगा "string"। - Roman Starkov
एक आरक्षित शब्द के रूप में एक चर नाम के रूप में भी ध्यान में रखें ध्यान में बहुत ही सुरुचिपूर्ण है। - Elton
"ढेर अतिप्रवाह उन्हें अलग-अलग हाइलाइट करता है"। कोई और कारण जरूरी नहीं :) - Ole Albers
ओपी एक परिवर्तनीय नाम के रूप में स्ट्रिंग या स्ट्रिंग का उपयोग नहीं करना चाहता है। उन्होंने इन दोनों के बीच अंतर की व्याख्या के लिए कहा प्रकार। आपका उत्तर केवल अधिक भ्रम आईएमओ जोड़ने में काम करता है - Matt Wilko


एक अंतर है - आप इसका उपयोग नहीं कर सकते String के बग़ैर using System; पहले से।


327



डिफ़ॉल्ट रूप से अधिकांश लोग फ़ाइल के शीर्ष पर किसी भी तरीके से इसे जोड़ते हैं। वीएस डिफ़ॉल्ट रूप से अधिकांश मामलों में यह नहीं करता है! - IbrarMumtaz
डिफ़ॉल्ट रूप से मैं केवल जोड़ता हूं using मुझे आवश्यक बयान, और स्पष्ट रूप से उन सभी को हटा दें जो मैं नहीं करता हूं। पावर उत्पादकता उपकरण> "[x] सहेजने पर उपयोग निकालें और प्रारूपित करें" - JMD
@ जेएमडी मैंने .cs टेम्पलेट फ़ाइल को संशोधित किया है, इसलिए इसमें शीर्ष पर कोई भी कथन नहीं है! मैंने वर्ग टेम्पलेट को भी बदल दिया internal sealed। - ErikE


यह ऊपर कवर किया गया है; हालांकि, आप इसका उपयोग नहीं कर सकते हैं string प्रतिबिंब में; तुम्हें अवश्य उपयोग करना चाहिए String


269





System.String .NET स्ट्रिंग क्लास है - सी # में string के लिए एक उपनाम है System.String - इसलिए उपयोग में वे वही हैं।

दिशानिर्देशों के लिए मैं बहुत परेशान नहीं होता हूं और जो कुछ भी आपको लगता है उसका उपयोग करें - जीवन में और भी महत्वपूर्ण चीजें हैं और कोड वैसे भी वही होगा।

यदि आप स्वयं को ऐसे सिस्टम बनाते हैं जहां आपके द्वारा उपयोग किए जा रहे पूर्णांक के आकार को निर्दिष्ट करना आवश्यक है और इसलिए इसका उपयोग करना है Int16, Int32, UInt16, UInt32 आदि तो यह उपयोग करने के लिए और अधिक प्राकृतिक लग सकता है String- और अलग-अलग .net भाषाओं के बीच घूमते समय यह चीजों को और अधिक समझने योग्य बना सकता है - अन्यथा मैं स्ट्रिंग और int का उपयोग करूंगा।


204



+1 यह बताते हुए कि जीवन में और अधिक महत्वपूर्ण चीजें हैं, मुझे लगता है कि यहां तक ​​कि एक और स्टैक ओवरव्लो लाखों उपरोक्त प्रश्न हैं तुच्छ मामला हो रहा है: en.wikipedia.org/wiki/Parkinson's_law_of_triviality - Sebastian
बस एक चुनें और सुसंगत रहें। यदि आप घर शैली के साथ कहीं काम करते हैं, तो इसका इस्तेमाल करें। - Alan B
दुर्भाग्यवश शैली व्यक्तिगत वरीयता है और समर्पित कोड मालिक के बिना कई टीमों में बड़े कोड बेस में लागू करने के लिए बहुत महंगा हो सकता है। स्ट्रिंग बनाम स्ट्रिंग के बजाय देखभाल करने के लिए हमेशा अधिक महत्वपूर्ण मामले होते हैं। जो हमें वापस "जीवन में अधिक महत्वपूर्ण चीजें" लाता है - aiodintsov


मैं पूंजीकृत पसंद करते हैं .NET फ़ॉर्मेटिंग कारणों के लिए प्रकार (उपनामों के बजाए)। .NET प्रकार अन्य ऑब्जेक्ट प्रकारों के समान रंग होते हैं (मूल्य प्रकार उचित वस्तुएं हैं, आखिरकार)।

सशर्त और नियंत्रण कीवर्ड (जैसे if, switch, तथा return) लोअरकेस और रंगीन गहरे नीले रंग (डिफ़ॉल्ट रूप से) हैं। और मैं उपयोग और प्रारूप में असहमति नहीं होगी।

विचार करें:

String someString; 
string anotherString; 

167



क्या आप कोड भी लिखते हैं जैसे: Int32 i = 1; Int i = 1 की बजाय; ? जब यह उपलब्ध हो तो स्ट्रिंग उपनाम का उपयोग न करने के लिए असंगत लगता है। - bytedev
@nashwan: वास्तव में, हाँ, मैं उपयोग करता हूँ Int32 i=1; का इरादा int i = 1;  मुझे लगता है कि पूर्व को मेरे इरादे के रूप में अधिक पठनीय होना चाहिए: अर्थात् मैं 32 बिट हस्ताक्षरित पूर्णांक चाहता हूं। - NotMe
खैर मुझे लगता है कि यह सब निर्भर करता है कि डेवलपर सोचता है कि वे सी # कोड (स्ट्रिंग) या .NET कोड (स्ट्रिंग) लिख रहे हैं। व्यक्तिगत रूप से मुझे लगता है कि मैं सी # लिख रहा हूं (और यह सी # है जो .NET का उपयोग कर रहा है)। - bytedev
@ एलेक्स: मेरा मुद्दा यह था कि अस्पष्टता को दूर करने के लिए मैं अपने कोडिंग में बहुत विशिष्ट होना पसंद करता हूं। - NotMe
स्पेक्ट्रम के पूर्ण दूसरे छोर पर, मैं लगभग हमेशा उपयोग करता हूं var - tic


string तथा String सभी तरीकों से समान हैं (अपरकेस "एस" को छोड़कर)। किसी भी तरह के प्रदर्शन प्रभाव नहीं हैं।

छोटे string सिंटैक्स हाइलाइटिंग के कारण अधिकांश परियोजनाओं में प्राथमिकता दी जाती है


166



जेफरी रिक्टर सभी मामलों में सीएलआर प्रकार (सी # के माध्यम से सीएलआर) का उपयोग करने की सिफारिश करता है ताकि वास्तव में यहां होने वाली भ्रम से बचने के लिए। - Josh
जाहिर है, चाहे आप एस या एस का उपयोग करते हैं, इस सवाल के कारण होगा, इसलिए रिक्टर को कम वोट दें। ;) - Brad Wilson
रिचटर का मतलब था कि स्ट्रिंग एक विकल्प नहीं होना चाहिए था - माइक्रोसॉफ्ट को भाषा में नहीं होना चाहिए था। आप रिक्टर को कम वोट नहीं दे सकते - वह एक किंवदंती है! :) - Joe Ratzer
उचित बिंदु जॉन, लेकिन मैं स्ट्रिंग के बारे में इस बिंदु पर रिचटर से सहमत हूं। और हाँ, मैं पूरी तरह से सहमत हूं - सी # के माध्यम से सीएलआर अद्भुत है! - Joe Ratzer
"स्ट्रिंग" "स्ट्रिंग" जैसा नहीं है। इसका मतलब है "सिस्टम। स्ट्रिंग"। तो यदि आप "स्ट्रिंग" का उपयोग करते हैं तो आपको नेमस्पेस को शामिल करने के लिए "सिस्टम का उपयोग करना" रखना होगा - ThiagoAlves