.NET में "स्ट्रिंग" और "स्ट्रिंग" के बीच अंतर और कौन सा सबसे अच्छा है?


15

.NET फ्रेमवर्क में, कम से कम C # भाषा में, हमारे पास स्ट्रिंग प्रकार के दो "संस्करण" हैं:

  • "स्ट्रिंग"
  • "स्ट्रिंग"

ऐसा प्रतीत होता है कि वे विनिमेय हैं, लेकिन क्या वे वास्तव में हैं? यदि वे विनिमेय नहीं हैं, तो क्या यह आमतौर पर एक के बजाय दूसरे का उपयोग करना बेहतर होता है, और किन परिस्थितियों में?


1
इस सवाल के समान: stackoverflow.com/q/6000517/6504
Agent_9191

2
Stylistically, मैं निम्न-केस संस्करण का उपयोग तब करता हूं जब मैं टाइप का संदर्भ दे रहा होता हूं, और ऊपरी-केस संस्करण जब मैं System.String का स्थिर तरीका कह रहा होता हूं।
जोएल मुलर

4
के समान stackoverflow.com/questions/7074/...
zzzzBov

2
stringमें मौजूद नहीं है .net, यह केवल C # में मौजूद है।
कोडइन्चोस

1
हालांकि यह स्टैक ओवरफ्लो के लिए थोड़ा अधिक उपयुक्त हो सकता है, मुझे नहीं लगता कि यह प्रोग्रामर्स के लिए पूरी तरह से विषय है, और चूंकि स्टैक ओवरफ्लो में पहले से ही कम से कम एक डुप्लिकेट है, इसलिए इसे माइग्रेट करने में बहुत अधिक बिंदु नहीं होगा। इसलिए कृपया माइग्रेट करने के लिए फ्लैगिंग / क्लोज वोटिंग को रोक दें, अगर आपको लगता है कि इसे बंद किया जाना चाहिए, तो यह अच्छा है, लेकिन इसे बंद किया जाना चाहिए, माइग्रेट नहीं किया जाना चाहिए।
यानिस

जवाबों:


30

MSDN के अनुसार अच्छी तरह से

स्ट्रिंग .NET फ्रेमवर्क में स्ट्रिंग के लिए एक उपनाम है ।

जहां "स्ट्रिंग" वास्तव में है System.String

मैं कहूंगा कि वे विनिमेय हैं और आपको कब और कहां एक या दूसरे का उपयोग करना चाहिए, इससे कोई अंतर नहीं है।

यह बेहतर होगा कि आप जिसके साथ उपयोग करते हैं, उसके अनुरूप हो।


किसी कारण के लिए मेरे सिर में यह था कि स्ट्रिंग एक टाइप टाइप स्ट्रिंग के चारों ओर एक वर्ग आवरण था और यह मुक्केबाजी के विचार की ओर जाता है ... क्या मैं यहां पूरी तरह से गलत हूं?
एरॉन एनोडाइड

1
@ गैब्रिएल नहीं, String(और इसलिए stringउपनाम से) संदर्भ प्रकार हैं।
क्रिश हार्पर

@ गैब्रिएल: क्या जावा बाइट बनाम बाइट जैसे सामान के साथ नहीं है?
whatsisname

क्या यह डबल बनाम डबल, और अन्य डेटा प्रकारों के लिए भी सही है?
गैविन कोट

1
@AaronAnodide मेरा मानना ​​है कि यह एक जावा सम्मेलन है, जो संभवत: जहां आपने इसके बारे में सुना है।
KChaloux

20

जैसा कि बताया गया है, वे एक ही चीज हैं और stringसिर्फ एक उपनाम है String

इसके लायक क्या है, मैं stringप्रकार घोषित करने के लिए उपयोग करता हूं - चर, गुण, रिटर्न मान और पैरामीटर। यह अन्य प्रणाली प्रकार के उपयोग के साथ संगत है - int, bool, varआदि (हालांकि Int32और Booleanभी सही हैं)।

मैं Stringस्ट्रिंग क्लास पर स्थिर तरीकों का उपयोग करते समय, जैसे String.Split()या String.IsNullOrEmpty()। मुझे लगता है कि यह अधिक समझ में आता है क्योंकि विधियां एक वर्ग से संबंधित हैं, और यह इस बात के अनुरूप है कि मैं अन्य स्थैतिक तरीकों का उपयोग कैसे करता हूं।


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

4

मेरा सुझाव है कि लोअरकेस का उपयोग करें string। अपरकेस Stringप्रथम श्रेणी का उपयोग करेगा जिसका नाम स्ट्रिंग है जो आयातित नामस्थानों में पाता है ... जो आम तौर पर है System.String। इसके बजाय आपके स्वयं के स्ट्रिंग वर्ग का उपयोग करना संभव है।


3
यदि आपके पास एक ही नाम के साथ दो अलग-अलग आयातित प्रकार हैं, और आप उस नाम का उपयोग बिना नाम योग्यता के करते हैं, तो आपको एक त्रुटि मिलेगी।
22

यह चाल करने के लिए संभव है String, काम करने में यह चाल करने के लिए संभव नहीं होता string
ब्रायन बोएचर

फिर भी, मुझे नहीं लगता कि यह उपयोग करने के लिए एक अच्छा पर्याप्त कारण है string
22

5
कैसे "एक टूट सकता है" बनाम "एक कभी नहीं टूटेगा" बाकी सभी समान होने के साथ एक अच्छा पर्याप्त कारण नहीं है?
ब्रायन बोएचर

4

string एक C # कीवर्ड है जो केवल एक उपनाम है System.String

.. लेकिन जैसा कि यह एक कीवर्ड है, आपका सिंटैक्स कलरिंग एडिटर / आईडीई इसे कीवर्ड कलर में दिखाएगा, जैसे इंट, डबल, इफ, इत्यादि। स्टाइलिस्टिक रूप से, आप System.Stringटाइप के बजाय कीवर्ड का उपयोग करना पसंद कर सकते हैं (या इसके Stringबाद बस) तुमने किया है using System;)।

यह एक आला बिंदु हालांकि, हालांकि के रूप में है bool, char, int, doubleऔर stringप्रणाली प्रकार की सभी कीवर्ड उपनाम कर रहे हैं, stringहै एक अजीब-एक-बाहर के रूप में यह एक संदर्भ प्रकार है और दूसरों के मूल्य प्रकार हैं।


4
objectएक संदर्भ प्रकार के लिए एक कीवर्ड उपनाम है, भी
nikie

अरे हाँ, मैं उस एक के बारे में सब भूल गया - अनुस्मारक के लिए धन्यवाद।
JBRWilkinson

2

stringके लिए सिर्फ एक उपनाम है String, वे अंततः एक ही हैं।

आप उपयोग कर सकते हैं, जो भी आप पसंद करते हैं, हालांकि मैं आम तौर पर उपयोग करने के stringलिए यह प्रयोग पर ज्यादा एक आदिम डेटा प्रकार की तरह जब मैं योजना बना रहा हूँ (समान करने के लिए int, floatया bool) और Stringजब मैं एक वस्तु / वर्ग के रूप में यह प्रयोग पर योजना बना रहा हूँ। उदाहरण के लिए:

string foo = "   ";
if (String.isNullOrWhitespace(foo)) 
{
    // ...
}

उपरोक्त मामले में, मैं fooबस कुछ पाठ (प्रभावी रूप से एक आदिम के रूप में) को स्टोर करने के लिए उपयोग कर रहा हूं , इसलिए मैं उपयोग करता हूं string; हालांकि, जब मैं फोन करता String.isNullOrWhitespace(string)हूं तो मैं उपयोग करता हूं String। मैं ऐसा करता हूं, क्योंकि आम तौर पर वर्ग नामों के पहले अक्षर को पूंजीकृत किया जाता है ( String) जबकि आदिमों का पहला अक्षर (जैसे int) नहीं होता है।


-2

स्ट्रिंग का उपयोग नामस्थान सिस्टम के साथ किया जाता है। स्ट्रिंग, स्ट्रिंग का उपयोग C # संकलक विनिर्देश, इसके अलावा किया जाता है । System.String संदर्भ प्रकार का मान है। आपको सिस्टम ऑब्जेक्ट्स से निपटने के लिए प्राथमिकता दी जाती है, केवल शाब्दिक प्रयोजनों के लिए स्ट्रिंग। सिस्टम और सिस्टम दोनों काम कर रहे हैं।

string TC = new System.String('/', 5);

स्ट्रिंग का उपयोग तुलना, समान और अन्य प्रयोजनों के लिए भी किया जाता है।


4
इस से पहले 6 जवाब पर पर्याप्त प्रस्ताव कुछ भी दिखाई नहीं देता है
कुटकी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.