2012-02-15 9 views

उत्तर

13

string.Concatबस एक साथ तारों को जोड़ता है। यह ToString बुला से परे कोई रूपांतरण प्रदान करता है, कोई स्वरूपण आदि

string.Format एक अधिक बेहतर है, जिससे प्रारूप पैटर्न आदि है

जब आप सी # स्रोत कोड में + ऑपरेटर का उपयोग, संकलक धर्मान्तरित कि String.Concat के लिए कॉल में - यह decimal में कहने के तरीके में निष्पादन समय ऑपरेटर नहीं है।

तो यह:

string result = x + y + z; 

इस में संकलित किया गया है:

string result = string.Concat(x, y, z); 

दक्षता के मामले में, स्पष्ट रूप से string.Concat करने के लिए कॉल और + का उपयोग कर बराबर हो सकता है। मैं आम तौर पर string.Formatसे तेज़ होने की अपेक्षा करता हूं लेकिन अधिकांश मामलों में अंतर में नगण्य होगा। आपको सबसे स्पष्ट, सबसे रखरखाव कोड लिखना चाहिए (जिसे अक्सर string.Format का उपयोग करना है) और फिर माइक्रो-ऑप्टिमाइज़ केवल तभी होता है जब आपके पास परीक्षण डेटा है, यह दिखाने के लिए कि को उस विशेष टुकड़े को अनुकूलित करने के लिए की आवश्यकता है, और फिर केवल एक बार अनुकूलन बनाए रखें आपने साबित कर दिया है कि यह मदद करता है।

एक ऐसा क्षेत्र है जहां अनुकूलन का एक सा कर सकते हैं एक बहुत बड़ा अंतर है संयोजन दोहराया है, आमतौर पर एक पाश में ध्यान दें कि। यह कोड बेहद अक्षम है:

string result = ""; 
foreach (var x in y) 
{ 
    // Do some processing... 
    string z = ...; 
    result += z; 
} 

यह प्रत्येक पुनरावृत्ति पर एक मध्यवर्ती स्ट्रिंग की प्रतिलिपि बनाने के लिए समाप्त होता है। इन परिस्थितियों में, या तोStringBuilder का उपयोग करें, या उन सामग्रियों का प्रतिनिधित्व करने के लिए LINQ क्वेरी का उपयोग करें जिन्हें आप समापन करने की आवश्यकता होगी और फिर string.Join या string.Concat को संगतता निष्पादित करने के लिए।

+0

बहुत अच्छा जवाब! +1 – theknut

+0

यह संभवतः यह इंगित करने लायक है कि प्रदर्शन अंतर (यद्यपि संभवतः नगण्य, जैसा कि जॉन इंगित करता है) क्योंकि हुड के तहत, 'स्ट्रिंग.फॉर्मैट' काम करने के लिए 'स्ट्रिंगबिल्डर' को तत्काल बनाता है, जबकि 'स्ट्रिंग.कोनकैट' (और '+', संभवतः, फिर) स्मृति में 'असुरक्षित' स्ट्रिंग मैनिपुलेशन का उपयोग करता है। –

+0

@ ओवेनब्लैकर: मैं इसे इसलिए नहीं मानना ​​चाहता हूं। मूल रूप से यह और अधिक काम कर रहा है - इसे एक चीज़ के लिए प्रारूप स्ट्रिंग को पार्स करना होगा। –

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