मैं एक ऐसा फ़ंक्शन बनाने की कोशिश कर रहा हूं जो एक ऐसा क्रिया बना सके जो पूर्णांक पारित हो जाए। हालांकि मेरा पहला प्रयास मुझे एक त्रुटि दे रहा है "रेफरी या अज्ञात विधि निकाय के अंदर पैरामीटर बाहर "।सी # किसी अज्ञात विधि निकाय के अंदर रेफरी या आउट पैरामीटर का उपयोग नहीं कर सकता
public static class IntEx {
public static Action CreateIncrementer(ref int reference) {
return() => {
reference += 1;
};
}
}
मुझे समझ में क्यों संकलक यह पसंद नहीं है, लेकिन फिर भी मैं एक अच्छा incrementer कारखाना है कि किसी भी पूर्णांक को इंगित कर सकते हैं प्रदान करने के लिए एक सुंदर तरीका है करना चाहते हैं। एक ही तरीका है मैं यह करने के दिखाई दे रही है की तरह कुछ है निम्नलिखित:
public static class IntEx {
public static Action CreateIncrementer(Func<int> getter, Action<int> setter) {
return() => setter(getter() + 1);
}
}
लेकिन निश्चित है कि फोन करने वाले का उपयोग करने के लिए एक दर्द के और अधिक है की; कॉलर को केवल संदर्भ में गुजरने के बजाय दो लैम्ब्डा बनाने की आवश्यकता होती है। क्या इस कार्यक्षमता को प्रदान करने का कोई और शानदार तरीका है, या क्या मुझे सिर्फ दो-लैम्ब्डा विकल्प के साथ रहना होगा?
क्या यह एक सरल उदाहरण है? एक्स ++ का उपयोग क्यों नहीं करें? इस कक्षा – Gishu
@Gishu की एक और कक्षा बढ़ती स्थिति क्यों है यह एक सरलीकृत उदाहरण है; बड़े उपयोग के मामले को समझाना कठिन होता है, लेकिन यह सब एक एक्शन फैक्ट्री बनाने के लिए नीचे आता है जो मूल्य प्रकारों पर संचालन कर सकता है। असुरक्षित संदर्भ का उपयोग कर प्रबंधित मोड के दिलचस्प कामकाज के लिए –