Tuesday, 15 May 2012

c# - using a method as variable -


मेरे पास एक ऐसा तरीका है जो एक पूर्णांक को आउटपुट करता है:

  सार्वजनिक int Random6 () {int N = _r। अगला (1, 7); वापसी n; }   

और मेरे पास एक पाश है जो विधि को कॉल करता है:

  सार्वजनिक स्थिर शून्य डाइसलूप () {int result = 0; के लिए (इंट I = 0; i & lt; maxDice; i ++) {परिणाम = = यादृच्छिक; } कंसोल.प्रकाश रेखा (परिणाम); }   

मैं एक बार पाश को लिखने में सक्षम होना चाहता हूं और फिर इसे एक चर नाम का उपयोग करके कई तरीकों से गुजारें। उदाहरण के लिए:

  सार्वजनिक स्थिर शून्य डाइसलूप () {int result = 0; (इंट I = 0; i & lt; maxDice; i ++) के लिए {परिणाम + = डाइसटाइप; } कंसोल.प्रकाश रेखा (परिणाम); }   

जहां diceType एक वेरिएबल है जो एक if फ़ंक्शन का उपयोग करके विधि नाम रखेगा। मुझे पता है कि मेरे पास चर के रूप में कोई विधि नहीं हो सकती है मैंने diceType एक स्ट्रिंग बनाने की कोशिश की और पाश को पास किया, लेकिन क्योंकि Random6 एक int देता है, वह काम नहीं करेगा मैंने एक कोड में diceType कास्टिंग करने की कोशिश की है, लेकिन यह काम नहीं करता क्योंकि यह विधि का नाम कास्टिंग कर रहा है, न कि वह नंबर बाहर निकलता है। मै यह कैसे कर सकता हूँ? क्या मुझे सिर्फ चर के एक अतिरिक्त परत की आवश्यकता है और कहीं कास्टिंग करना है?

आप एक चर के रूप में एक प्रतिनिधि है आप अपने DiceLoop फ़ंक्शन में पैरामीटर पास कर सकते हैं: public static void DiceLoop (Func & lt; int & gt; getNext) {int result = 0; के लिए (इंट I = 0; i & lt; maxDice; i ++) {परिणाम + = मिलनसार (); } कंसोल.प्रकाश रेखा (परिणाम); }

और फिर आप इस तरह से कॉल कर सकते हैं:

  डायस लूप (रैंडम 6);   

यह आपके विशेष केस को हल करने का सबसे आसान तरीका है। यदि आप कहना चाहते हैं, एक वेरिएबल बनाएँ और उसे किसी प्रतिनिधि के संदर्भ में निर्दिष्ट करें, तो आप यह कर सकते हैं:

  फ़ंक्शन & lt; int & gt; GetNext = Random6; DiceLoop (getNext);   

आप इस तरह से (a.k.a अनाम फ़ंक्शंस) का उपयोग भी कर सकते हैं:

  फ़नक & lt; int & gt; GetNext = () = & gt; _r.ext (1, 7); DiceLoop (getNext);    

No comments:

Post a Comment