का संकेत है कि है कि वे आधारित हैं, या बुला , कक्षा में एक और कन्स्ट्रक्टर जब इसे BarInterval
की सरणी के रूप में मूल्य कहा जाता है और गुजरता है। इस मामले में यह आधार वर्ग नहीं है क्योंकि अन्यथा यह : base(...)
कहता है, यह एक ही श्रेणी में परिभाषित एक और निर्माता है।
यह बहुत आम है क्योंकि आप कक्षा को कई अलग-अलग तरीकों तक पहुंचना चाहते हैं, और इस मामले में, ऐसा लगता है कि वे कोड में सरणी सेट किए बिना कभी-कभी एक ही ऑब्जेक्ट भेजने में सक्षम होना चाहते थे।
हालांकि, एक बात वे कर सकते थे बस अन्य निर्माता बदल गया है, एक : this
साथ बुलाया जा रहा है इस होने के लिए:
public BarListTracker(params BarInterval[] interval)
और वे भी दूसरे निर्माता की जरूरत नहीं होती। यह एक क्लीनर समाधान है और हर जगह एक ही परिणाम पैदा करता है।अन्य निर्माता अभी भी एक सरणी हो जाता है, तो आप भी एक सरणी यह करने के लिए यदि आप चाहते थे पारित कर सकते हैं:
var arrOfBarInterval = new BarInterval[] { val1, val2 };
var tracker = new BarListTracker(arrOfBarInterval);
लेकिन, आप भी सिर्फ एक पारित कर सकते हैं:
var tracker = new BarListTracker(barInterval);
आप ऐसा करने की क्षमता है, तो कि मैं इसकी सिफारिश करूंगा।
नोट करने के लिए एक चेतावनी, : this(...)
कन्स्ट्रक्टर से पहले जिस कंस्ट्रक्टर में हैं, उसे बुलाया जाता है। तर्क बनाते समय इसे ध्यान में रखें।
स्रोत
2013-08-02 19:13:55
यह कन्स्ट्रक्टर ओवरलोडिंग के लिए सी # सिंटैक्स है। http://stackoverflow.com/a/5555741/1445661 – mao47