एक प्रक्षेपित स्ट्रिंग के अंदर टर्नरी ऑपरेटर का उपयोग कैसे करें?


408

मैं उलझन में हूँ कि यह कोड क्यों संकलित नहीं होगा:

var result = $"{fieldName}{isDescending ? " desc" : string.Empty}";

अगर मैं इसे विभाजित करता हूं, तो यह ठीक काम करता है:

var desc = isDescending ? " desc" : string.Empty;
var result = $"{fieldName}{desc}";

9
@Sinatr अपडेटेड लिंक: thebillwagner.com/Blog/Item/…
Nate Barbettini


जवाबों:


722

प्रलेखन के अनुसार :

एक प्रक्षेपित स्ट्रिंग की संरचना इस प्रकार है:

{ <interpolationExpression>[,<alignment>][:<formatString>] }

समस्या यह है कि बृहदान्त्र का उपयोग स्वरूपण को दर्शाने के लिए किया जाता है, जैसे:

Console.WriteLine($"The current hour is {hours:hh}")

समाधान कोष्ठक में सशर्त लपेटना है:

var result = $"Descending {(isDescending ? "yes" : "no")}";

2
इससे भी अधिक दिलचस्प उदाहरण यह है जब आपको एक नेस्टेड इंटरपोलेशन स्ट्रिंग का उपयोग करने की आवश्यकता होती है: Console.WriteLine($"Cargo Weight: {(ship.WeightAvailable ? $"{ship.Weight:0.00}" : "n/a")}");
जन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.