संभव डुप्लिकेट (कम):
What's the @ in front of a string for .NET?@ फ़ाइल पथ साइन इन/स्ट्रिंग
मैं निम्नलिखित कोड है:
new Attachment(Request.PhysicalApplicationPath + @"pdf\" + pdfItem.Value)
क्या @
संकेत क्या करता है ?
संभव डुप्लिकेट (कम):
What's the @ in front of a string for .NET?@ फ़ाइल पथ साइन इन/स्ट्रिंग
मैं निम्नलिखित कोड है:
new Attachment(Request.PhysicalApplicationPath + @"pdf\" + pdfItem.Value)
क्या @
संकेत क्या करता है ?
इसका फ़ाइलपैथ से कोई लेना देना नहीं है। यह तारों के बचने के व्यवहार को बदलता है।
@
के साथ एक स्ट्रिंग शाब्दिक उपसर्ग में \
से शुरू होने वाले भागने वाले अनुक्रम अक्षम हैं। \
के बाद से फ़ाइलपैथ के लिए यह सुविधाजनक है पथ विभाजक है और आप नहीं चाहते हैं कि यह एक एस्केप अनुक्रम शुरू करें।
एक सामान्य स्ट्रिंग में आपको \
से \\
में भागना होगा, इसलिए आपका उदाहरण इस "पीडीएफ \\" जैसा दिखता है। लेकिन चूंकि यह @
से पहले से चिपका हुआ है, इसलिए एकमात्र चरित्र जिसे बचने की आवश्यकता है "
(जो ""
से बच निकला है) और \
बस दिखाई दे सकता है।
यह सुविधा \
जैसे फ़ाइलपैथ या रेगेक्स युक्त तारों के लिए सुविधाजनक है।
अपने सरल उदाहरण के लिए लाभ है कि बड़ा नहीं है, लेकिन छवि आप एक पूर्ण पथ "C:\\ABC\\CDE\\DEF"
है तो @"C:\ABC\CDE\DEF"
एक बहुत अच्छे लग रहा है।
नियमित अभिव्यक्तियों के लिए यह लगभग एक जरूरी है। एक रेगेक्स में आमतौर पर कई \
अन्य वर्णों से बचने में शामिल होते हैं और यदि आप उन्हें बचाना चाहते हैं तो अक्सर लगभग अपठनीय हो जाते हैं। (और के बाद से तार संकलन समय पर interned कर रहे हैं, शायद ही स्ट्रिंग संदर्भ में एक ही सामग्री के साथ एक स्ट्रिंग में
var s1 = "C:\\Temp\\MyFileName";
var s2 = @"C:\Temp\MyFileName";
दोनों परिणाम:
यह आप इसे से बचने के बिना बैकस्लेश (\) दर्ज करने के लिए अनुमति देता है)।
यह verbatim string literal है।
इस स्ट्रिंग उनके बिना बैकस्लैश और यहां तक कि लाइनब्रेक शामिल करने के लिए अनुमति देता है अलग ढंग से संभाला जा रहा:
string multiLineString = @"First line
second line
third line";
के रूप में बैकस्लैश से बचने, स्ट्रिंग में एक दोहरे उद्धरण डालने के लिए इस्तेमाल नहीं कर रहे हैं ऐसा करना आवश्यक हो दोगुनी हो जाना चाहिए:
string withQuote = @"before""after";
वर्बैटिम स्ट्रिंग अक्षर आमतौर पर फ़ाइल पथ (जैसा कि आपने दिखाया है) और नियमित अभिव्यक्तियों के लिए उपयोग किया जाता है, जिनमें से दोनों अक्सर बैकस्लाश का उपयोग करते हैं।
अधिक जानकारी के लिए मेरे article on strings देखें।
तो यह कैसे बदलता है? – Sally
@ सैली '@' को हटाने के बाद अपना कोड चलाने का प्रयास करें और अंतर देखें! – Mayank
वैकल्पिक रूप से, 'पथ' वर्ग फ़ाइल सिस्टम पथों के लिए भी सुविधाजनक है। –