सवाल प्रदर्शन के बारे में था, हालांकि शीर्षक सिर्फ "बनाम" कहता है, इसलिए मुझे लगता है कि कुछ और बिंदुओं को जोड़ना होगा, उनमें से कुछ को हालांकि माना जाता है।
स्थानीयकरण
- इनलाइन कोड प्रकृति के कारण स्ट्रिंग प्रक्षेप को स्थानीय नहीं किया जा सकता है। स्थानीयकरण से पहले इसे बदल दिया गया है
string.Format
। हालाँकि, इसके लिए टूलिंग है (जैसे ReSharper
)।
रखरखाव (मेरी राय)
string.Format
यह कहीं अधिक पठनीय है, क्योंकि यह उस वाक्य पर केंद्रित है जो मैं वाक्यांश के लिए करना चाहता हूं, उदाहरण के लिए जब एक अच्छा और सार्थक त्रुटि संदेश का निर्माण। {N}
प्लेसहोल्डर का उपयोग करने से मुझे अधिक लचीलापन मिलता है और बाद में इसे संशोधित करना आसान होता है।
- इसके अलावा, अंतर्ग्रहण में निर्दिष्ट प्रारूप निर्दिष्ट करना गलत होना आसान है, और बदलाव के दौरान अभिव्यक्ति को एक साथ हटाना आसान है।
- जटिल और लंबी अभिव्यक्तियों का उपयोग करते समय, प्रक्षेप जल्दी से पढ़ने और बनाए रखने के लिए और भी अधिक कठिन हो जाता है, इसलिए इस अर्थ में कोड विकसित होने और अधिक जटिल होने पर यह अच्छी तरह से पैमाने पर नहीं होता है।
string.Format
इससे बहुत कम खतरा है।
- दिन के अंत में यह सब चिंताओं की जुदाई के बारे में है: मैं मिश्रण करना पसंद नहीं है कि यह कैसे पेश करना चाहिए के साथ क्या प्रस्तुत किया जाना चाहिए ।
इसलिए इन के आधार पर मैंने string.Format
अपने अधिकांश कोड में साथ रहने का फैसला किया । हालाँकि, मैंने कोडिंग के अधिक धाराप्रवाह तरीके के लिए एक विस्तार विधि तैयार की है जो मुझे बहुत पसंद है। एक्सटेंशन का कार्यान्वयन एक-लाइनर है, और यह उपयोग में बस इस तरह दिखता है।
var myErrorMessage = "Value must be less than {0:0.00} for field {1}".FormatWith(maximum, fieldName);
प्रक्षेप एक महान विशेषता है, मुझे गलत मत समझो। लेकिन IMO यह उन भाषाओं में सबसे अच्छा चमकता है, जो string.Format
उदाहरण के लिए, जावास्क्रिप्ट जैसी मिसाल पेश करती हैं।