C # 6 में एक नई विशेषता है: प्रक्षेपित तार।
ये आपको अनुक्रमणिका पर निर्भर रहने के बजाय सीधे कोड में अभिव्यक्ति देते हैं:
string s = string.Format("Adding \"{0}\" and {1} to foobar.", x, this.Y());
हो जाता है:
string s = $"Adding \"{x}\" and {this.Y()} to foobar.";
हालाँकि, हमारे पास इस तरह वर्बटीम स्ट्रिंग्स (मुख्य रूप से SQL स्टेटमेंट) का उपयोग करके कई लाइनों में बहुत सारे तार हैं:
string s = string.Format(@"Result...
Adding ""{0}"" and {1} to foobar:
{2}", x, this.Y(), x.GetLog());
इन्हें नियमित तार में बदलना गड़बड़ लगता है:
string s = "Result...\r\n" +
$"Adding \"{x}\" and {this.Y()} to foobar:\r\n" +
x.GetLog().ToString();
मैं शब्दशः और प्रक्षेपित तार दोनों को एक साथ कैसे उपयोग करूं?
3
यदि यह वास्तव में SQL स्ट्रिंग्स के बारे में है, तो क्या इसके बजाय आप पैराड्राइज्ड प्रश्नों का उपयोग नहीं कर रहे हैं?
—
18
"हमारे पास वर्बेटिम स्ट्रिंग्स (मुख्य रूप से एसक्यूएल स्टेटमेंट्स) का उपयोग करके कई लाइनों में बहुत सारे तार हैं" ऐसा लगता है कि आपके पास एसक्यूएल इंजेक्शन हमलों को सक्षम करने के लिए बहुत सारे स्ट्रिंग हैं।
—
सीटिन बसोज
@svick हम कर रहे हैं, सब कुछ उपयोगकर्ता इनपुट पैरामीटरेट किया गया है। हम अभी भी गतिशील SQL का भारी उपयोग करते हैं, क्योंकि हम गतिशील रूप से कोड में हमारी संस्थाओं के लिए SQL बनाते हैं।
—
कीथ
@CetinBasoz हम नहीं करते - सभी उपयोगकर्ता इनपुट को मानकीकृत किया गया है। ऐसी बहुत सी परिस्थितियाँ हैं जहाँ आपके पास गतिशील SQL है - उदाहरण के लिए LINQ या कोई अन्य ऑब्जेक्ट मैपिंग फ्रेमवर्क।
—
कीथ