मेरे पास एक कक्षा है जिसे मुझे एक या दो तरीकों से एक-दूसरे के बाद कई बार कॉल करना पड़ता है। वर्तमान में विधियां void
लौटती हैं। मैं सोच रहा था, क्या यह बेहतर होगा कि यह this
लौटाए, ताकि विधियों को घोंसला जा सके? या यह बहुत बहुत बुरा माना जाता है? या यदि बुरा है, तो यह बेहतर होगा अगर यह उसी प्रकार की एक नई वस्तु वापस कर देता है? या आप क्या सोचते हैं?सी #: विधि घोंसले के लिए 'यह' लौट रहा है?
var a = new Adder();
a.Add(4);
a.Remove(1);
a.Add(7);
a.Remove(3);
अन्य दो इस तरह से इस्तेमाल किया जा सकता:
var a = new Adder()
.Add(4)
.Remove(1)
.Add(7)
.Remove(3);
// Regular
class Adder
{
public Adder() { Number = 0; }
public int Number { get; private set; }
public void Add(int i) { Number += i; }
public void Remove(int i) { Number -= i; }
}
// Returning this
class Adder
{
public Adder() { Number = 0; }
public int Number { get; private set; }
public Adder Add(int i) { Number += i; return this; }
public Adder Remove(int i) { Number -= i; return this; }
}
// Returning new
class Adder
{
public Adder() : this(0) { }
private Adder(int i) { Number = i; }
public int Number { get; private set; }
public Adder Add(int i) { return new Adder(Number + i); }
public Adder Remove(int i) { return new Adder(Number - i); }
}
पहले एक इस तरह से इस्तेमाल किया जा सकता: एक उदाहरण के रूप में मैं एक योजक वर्ग के तीन संस्करण बनाया है
जहां केवल अंतर यह है कि a
पहले मामले में new Adder()
है जबकि बाद में यह अंतिम विधि का परिणाम है।
सबसे पहले मुझे लगता है कि जल्दी से ... बार-बार लिखने के लिए परेशान हो रहा है। तो मैं अन्य संस्करणों में से एक का उपयोग करना चाहता हूं।
तीसरा काम कई अन्य तरीकों की तरह है, जैसे कई स्ट्रिंग विधियों और आईनेमरेबल एक्सटेंशन विधियां। मुझे लगता है कि इसमें सकारात्मक पॉजिटिव है कि आप var a = new Adder(); var b = a.Add(5);
जैसी चीजें कर सकते हैं और उसके बाद 0 था और वह 5 था। लेकिन साथ ही, क्या यह हर समय नई वस्तुओं को बनाने के लिए थोड़ा महंगा नहीं है? और पहली वस्तु कब मर जाएगी? जब पहली विधि किस तरह से लौटती है? या?
वैसे भी, मुझे वह पसंद है जो this
देता है और मुझे लगता है कि मैं इसका उपयोग करूंगा, लेकिन मुझे यह जानकर बहुत उत्सुकता है कि दूसरे इस मामले के बारे में क्या सोचते हैं। और सबसे अच्छा अभ्यास क्या माना जाता है।
आप तीसरे वर्ग में ऐसा नहीं करते जो आपने कहा था। आप संख्या से जोड़ या घटाएंगे और इसे नए एडर (...) में एक अलग पूर्णांक के रूप में पास करेंगे। – Samuel
ओह, अच्छा पकड़ो! धन्यवाद =) – Svish