2015-10-01 4 views
147

मैं एक पुस्तक में कुछ सी # अभ्यासों के माध्यम से चल रहा हूं, और मैं दौड़ गया और उदाहरण के लिए मुझे फेंक दिया।

Console.WriteLine($"\n\tYour result is {result}."); 

अब मैं के रूप में खड़ा है, कोड काम करता है और double result शो करता है, तो अपेक्षा के अनुरूप: सीधे किताब से, के रूप में उत्पादन लाइन को दर्शाता है। हालांकि, यह समझ में नहीं आता कि स्ट्रिंग के सामने $ क्यों है, मैंने इसे हटाने का निर्णय लिया, और अब कोड सामग्री के बजाय सरणी {result} के नाम को आउटपुट करता है। पुस्तक यह नहीं बताती है कि दुर्भाग्य से $ क्यों है।

मैं स्ट्रिंग स्वरूपण और कंसोल के बारे में वीबी 2015 सहायता और Google को खराब कर रहा हूं। राइटलाइन ओवरलोड विधियों। मैं कुछ भी नहीं देख रहा हूं जो बताता है कि यह क्यों है। किसी भी सलाह की सराहना की जाएगी।

+8

[इंटरपोलेटेड स्ट्रिंग्स] (https://msdn.microsoft.com/en-us/library/dn961160.aspx) – Eser

+0

किसी को यह मानना ​​होगा कि 'परिणाम' डेटाटाइप 'डबल' है जैसा आपने उल्लेख नहीं किया है यह। – pkamathk

+0

यह सुनिश्चित नहीं है कि क्यों, लेकिन इस पोस्ट में इसके डुप्लिकेट लक्ष्य की तुलना में अधिक प्रासंगिक प्रासंगिकता दिखाई देती है। यह चारों ओर डुप्ली रखने के लिए एक अच्छा मामला प्रतीत होता है। – jrh

उत्तर

33

String Interpolation

एक अवधारणा है कि पर्ल जैसी भाषाओं काफी देर के लिए किया गया है, और अब हम सी # में इस क्षमता के साथ-साथ मिलेगा। स्ट्रिंग इंटरपोलेशन में, हम बस $ $ के साथ स्ट्रिंग को उपसर्ग करते हैं (जैसे हम verbatim तारों के लिए @ का उपयोग करते हैं)। फिर, हम बस के भाव हम चाहते हैं चारों ओर घुंघराले ब्रेसिज़ के साथ अंतर्वेशन (यानी {और}):

यह String.Format की तरह एक बहुत लग रहा है() प्लेसहोल्डर, लेकिन एक सूचकांक के बजाय, यह है घुंघराले ब्रेसिज़ के अंदर खुद अभिव्यक्ति। वास्तव में, यह आश्चर्य की बात नहीं है कि यह स्ट्रिंग.फॉर्मैट() की तरह दिखता है क्योंकि यह वास्तव में यह सब है - सिंटैक्टिकल चीनी जो संकलक दृश्यों के पीछे स्ट्रिंग.फॉर्मैट() की तरह व्यवहार करता है।

एक बड़ा हिस्सा यह है कि कंपाइलर अब आपके लिए प्लेसहोल्डर्स को बनाए रखता है, इसलिए आपको सही तर्क को अनुक्रमणित करने की चिंता करने की आवश्यकता नहीं है क्योंकि आप इसे स्ट्रिंग में बस वहां रखते हैं।

और पढ़ें C#/.NET Little Wonders: String Interpolation in C# 6

+4

आपको अपना [स्रोत] उद्धृत करना चाहिए (http://geekswithblogs.net/BlackRabbitCoder/archive/2015/03/26/c.net-little-wonders-string-interpolation-in-c-6.aspx) यदि आप ' कॉपी/पेस्ट करने जा रहे हैं। –

222

यह सी में नई सुविधा # 6 Interpolated Strings कहा जाता है पर।

इसे समझने का सबसे आसान तरीका यह है: एक इंटरपोलेटेड स्ट्रिंग अभिव्यक्ति द्वारा स्ट्रिंग बनाता है जो अभिव्यक्ति के परिणामों के प्रस्तुत करने के लिए ToString के साथ निहित अभिव्यक्तियों को प्रतिस्थापित करता है।

इसके बारे में अधिक जानकारी के लिए, कृपया MSDN पर एक नज़र डालें।

अब, इसके बारे में थोड़ा और सोचें। यह सुविधा क्यों शानदार है?

public class Point 
{ 
    public int X { get; set; } 

    public int Y { get; set; } 
} 

2 उदाहरणों बनाएँ::

var p1 = new Point { X = 5, Y = 10 }; 
var p2 = new Point {X = 7, Y = 3}; 

अब, आप इसे स्क्रीन पर उत्पादन करना चाहते हैं

उदाहरण के लिए, आप वर्ग Point है। 2 तरीके है कि आप आमतौर पर उपयोग करें:

Console.WriteLine("The area of interest is bounded by (" + p1.X + "," + p1.Y + ") and (" + p2.X + "," + p2.Y + ")"); 

आप देख सकते हैं, स्ट्रिंग श्रृंखलाबद्ध इस कोड को पढ़ने के लिए कठिन और त्रुटि प्रवण बनाता है की तरह।आप इसे अच्छे बनाने के लिए string.Format() उपयोग कर सकते हैं:

Console.WriteLine(string.Format("The area of interest is bounded by({0},{1}) and ({2},{3})", p1.X, p1.Y, p2.X, p2.Y)); 

यह एक नई समस्या पैदा करता है:

  1. आप तर्क और अपने आप सूचकांक की संख्या बनाए रखने के लिए किया है।

उन कारणों से, हम नई सुविधा का उपयोग करना चाहिए:

Console.WriteLine($"The area of interest is bounded by ({p1.X},{p1.Y}) and ({p2.X},{p2.Y})"); 

संकलक अब आप के लिए प्लेसहोल्डर का कहना है ताकि आप सही तर्क का अनुक्रमण के बारे में चिंता है क्योंकि आप बस इसे सही जगह नहीं है स्ट्रिंग में वहाँ।

पूर्ण पोस्ट के लिए, कृपया this blog पढ़ें।

+4

"यदि आपको स्ट्रिंग में एक नया आइटम जोड़ने की आवश्यकता है (अंत तक नहीं), तो आपको संपूर्ण अनुक्रमण संख्या अपडेट करनी होगी।" अच्छा, यह सच नहीं है। यह क्रम में होना जरूरी नहीं है। – Thomas

+0

वह वाक्य 'string.Format()' :) – AnhTriet

+13

हां है। आप {0} से पहले आसानी से {4} जोड़ सकते हैं :) – Thomas

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