एक तार के लिए तार की सूची


206

कहते हैं कि तुम एक है:

List<string> los = new List<string>();

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

String.Join(String.Empty, los.ToArray());

StringBuilder builder = new StringBuilder();
los.ForEach(s => builder.Append(s));

string disp = los.Aggregate<string>((a, b) => a + b);

या सादी पुरानी स्ट्रिंगबर्स्ट फ़ार्च

या कोई बेहतर तरीका है?


9
ऐसा लगता है कि .Net 4 में एक स्ट्रिंग भी होगी। जॉइन (स्ट्रिंग, IEnumerable <string>), जिससे आप ToArray () msdn.microsoft.com/en-us/library/dd783876.aspx
luke

जवाबों:


289

मैं विकल्प A के साथ जाऊंगा:

String.Join(String.Empty, los.ToArray());

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

@Nuri YILMAZ के अनुसार .ToArray(), लेकिन यह .NET 4+ है:

String.Join(String.Empty, los);

जीए! मैंने भी इस विकल्प को पहले नहीं देखा था - इसे ठीक पिछले पढ़ें।
जोएल कोएहॉर्न

2
स्ट्रिंगब्यूलेर से 3 गुना तेज? वाह, मुझे लगा कि यह तेजी से होगा, एहसास नहीं था कि कितना तेज है। हालांकि यह समझ में आता है, यह संकेत का उपयोग करके असुरक्षित कोड में किया जाता है, इसलिए ..... समझ में आता है।
BFree

8
अच्छा! केवल टिप्पणी: join में los.ToArray () की आवश्यकता नहीं है, क्योंकि सूची <T> IEnumarable <T> कास्ट कर सकता है।
नूरी YILMAZ

8
@ नूरी: यह सवाल 08 से पहले पूछा गया था। नेट 4 से बाहर था। अधिभार जो IEnumerable <T> लेता है। .NET 4. में जोड़ा गया था
BFree

2
String.Join String.Concat के साथ मिलकर सुनहरा है। Ex: 'String.Concat ("{", String.Join (",", m_Data), "}");'
कोर्नमुफिन

51
string.Concat(los.ToArray());

यदि आप केवल तारों को समतल करना चाहते हैं तो string.Join () के बजाय string.Concat () का उपयोग करें।


18

यदि आप .net 4.0 का उपयोग करते हैं, तो आप सॉर्टर तरीके का उपयोग कर सकते हैं:

String.Join<string>(String.Empty, los);

10

String.Join () काफी तेजी से लागू किया गया है, और जैसा कि आपके पास पहले से ही प्रश्न में तार का एक संग्रह है, शायद सबसे अच्छा विकल्प है। इन सबसे ऊपर, यह चिल्लाता है "मैं तार की सूची में शामिल हो रहा हूं!" हमेशा अच्छा।



5

मेरा वोट स्ट्रिंग है

लैम्ब्डा मूल्यांकन और अस्थायी कार्यों के लिए कोई ज़रूरत नहीं है, कम फ़ंक्शन कॉल, कम स्टैक पुशिंग और पॉपिंग।

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