सरल निर्माता श्रृंखलन के लिए, आप विशेष कीवर्ड this
या base
वर्तमान या अभिभावक वर्ग के अन्य निर्माताओं का उल्लेख करने के लिए उपयोग कर सकते हैं। आपको निष्पादक कन्स्ट्रक्टर के लिए किसी भी पैरामीटर का उपयोग करने के लिए जंजीर कन्स्ट्रक्टर के पैरामीटर के रूप में उपयोग करने की अनुमति है, और आप उन्हें किसी भी कानूनी एकल अभिव्यक्ति का उपयोग करके संयोजित कर सकते हैं। यह मूल रूप से वही नियम है जो किसी फ़ंक्शन कॉल को प्रदान की गई किसी भी अन्य इनलाइन अभिव्यक्ति पर लागू होता है, सिवाय इसके कि आपको कक्षा के किसी भी सदस्य (चूंकि इसे अभी तक नहीं बनाया गया है) का उपयोग करना चाहिए और स्वयं को स्थिरांक और पास-थ्रू पैरामीटर तक सीमित करना चाहिए:
public foo (Uri someUrl)
{
this.url = someUrl;
}
public foo (string path, string query)
: this(new Uri(String.Concat(path, query)))
{
// this.url is now set and available.
}
यह प्रसंस्करण तुम क्या करने के लिए एक एकल महत्वपूर्ण अभिव्यक्ति में किया जा सकता की जरूरत के रूप में रूप में लंबे समय से काम करेगा। यदि आपको अन्य रचनाकार को भेजे जाने से पहले Uri
के साथ कुछ और करने की आवश्यकता है, या यदि आपको कुछ जटिल/यदि तर्क की आवश्यकता है, तो आप इस तकनीक से दूर नहीं जा पाएंगे। , तो आप उन्हें अपने साथ पार करने से पहले अपने तार संसाधित कर रहे हैं के बाद से
class Frob
{
public Frob (Uri uri)
{
}
public Frob(string path, string query)
: this(TidyUpUri(path, query))
{
}
private static Uri TidyUpUri(string path, string query)
{
var uri = new Uri(string.Concat(path, query));
// etc.
return uri;
}
}
स्रोत
2013-06-24 03:38:59
फिर से खोलने के लिए वोटिंग। डुप्लिकेट पोस्ट में उत्तर सही है लेकिन बाद के कन्स्ट्रक्टर को पास करने के लिए "सरल" पैरामीटर के लिए अधिक उन्मुख है। ओपी के पद से पता चलता है कि यूआरआई को पास करने से पहले कुछ प्रसंस्करण किया जाना है। एक अधिक उपयुक्त उत्तर एक सामान्य विधि होगी कि दोनों रचनाकार संदर्भ के अनुसार पैरामीटर को कॉल और पास करें। – keyboardP
@keyboardP, आपसे सहमत हैं। मैंने शीर्षक को संशोधित करने के लिए संशोधित किया और अधिक सटीक, और फिर से खोलने के लिए मतदान किया। (इस बारीकियों के डुप्लिकेट की भी तलाश की, और खाली हो गया) –
फिर से खोलने के लिए धन्यवाद। –