स्ट्रिंग के अंदर वैरिएबल का उपयोग करना


89

PHP में मैं निम्नलिखित कर सकता हूँ:

$name = 'John';
$var = "Hello {$name}";    // => Hello John

क्या C # में समान भाषा का निर्माण है?

मुझे पता है कि String.Format();लेकिन मैं यह जानना चाहता हूं कि क्या यह स्ट्रिंग पर एक फ़ंक्शन / विधि को कॉल किए बिना किया जा सकता है।

जवाबों:


223

C # 6 में आप स्ट्रिंग प्रक्षेप का उपयोग कर सकते हैं :

string name = "John";
string result = $"Hello {name}";

विज़ुअल स्टूडियो में इसके लिए वाक्य रचना हाइलाइट करना बहुत ही पठनीय है और सभी टोकन चेक किए गए हैं।


87

यह कार्यक्षमता अंतर्निहित C # 5 या उससे नीचे नहीं है।
अद्यतन: C # 6 अब स्ट्रिंग प्रक्षेप का समर्थन करता है, नए उत्तर देखें।

ऐसा करने का अनुशंसित तरीका String.Formatनिम्न होगा :

string name = "Scott";
string output = String.Format("Hello {0}", name);

हालाँकि, मैंने स्मार्टफार्म नाम की एक छोटी सी ओपन-सोर्स लाइब्रेरी लिखी है जो फैली हुई है String.Formatताकि यह नामित प्लेसहोल्डर्स (प्रतिबिंब के माध्यम से) का उपयोग कर सके। तो, आप कर सकते हैं:

string name = "Scott";
string output = Smart.Format("Hello {name}", new{name}); // Results in "Hello Scott".

उम्मीद है आप इसे पसंद करते हैं!


2
मानक स्ट्रिंग.फॉर्मैट बनाम आपके प्रतिबिंब कार्यान्वयन का उपयोग करने के लिए किस तरह का प्रदर्शन जुर्माना है?
स्टाइल

मैं देखता हूं कि विकी पर आपके पास पहले से ही एक प्रदर्शन पृष्ठ है । यह काफी आशाजनक लग रहा है। अच्छा काम!
स्टाइल

हां, मेरा मानना ​​है कि प्रदर्शन पृष्ठ संभवत: आपके प्रश्न को संबोधित करता है, लेकिन मैंने "हेलो {0}" बनाम "हेलो {0}" के बीच कोई तुलना नहीं की है। जाहिर है कि प्रतिबिंब को अधिक समय लगेगा। हालांकि, कैशिंग सुविधा का उपयोग पार्सिंग प्रदर्शन में सुधार करता है, और अंतर को कम कर सकता है। किसी भी तरह से, चीजें तेज़ हैं!
स्कॉट रिपी

1
यह अब सच नहीं है। C # 6 ने इसे एक फीचर के रूप में जोड़ा
कोल जॉनसन

5

C # 5 (-VS2013) तक आपको इसके लिए एक फ़ंक्शन / विधि को कॉल करना होगा। या तो "सामान्य" फ़ंक्शन जैसे कि String.Formatया ऑपरेटर का अधिभार।

string str = "Hello " + name; // This calls an overload of operator +.

C # 6 (VS2015) में स्ट्रिंग प्रक्षेप किया गया है (जैसा कि अन्य उत्तरों द्वारा वर्णित है)।


5

निम्न विधियों का उपयोग करें

1: विधि एक

var count = 123;
var message = $"Rows count is: {count}";

2: विधि दो

var count = 123;
var message = "Rows count is:" + count;

3: विधि तीन

var count = 123;
var message = string.Format("Rows count is:{0}", count);

4: विधि चार

var count = 123;
var message = @"Rows
                count
                is:{0}" + count;

5: विधि पाँच

var count = 123;
var message = $@"Rows 
                 count 
                 is: {count}";

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