वैकल्पिक पैरामीटर एक भाषा सुविधा है, संकलक मूल्यों के साथ पूर्ण कॉल के लिए वैकल्पिक पैरामीटर के साथ विधियों को कॉल करने के लिए कॉल का अनुवाद करने के लिए ज़िम्मेदार है। नीचे दिए गए कोड के इस सरल टुकड़ा पर
देखो,
public void GeneralMethod()
{
TestMethod(6);
}
public bool TestMethod(int a, int b = 8)
{
return true;
}
जब आप इन तरीकों एकत्रित न, आप पाएंगे कि सी # संकलक वास्तव में दोनों मानकों के साथ एक फोन करने के लिए एक पैरामीटर के साथ TestMethod करने के लिए कॉल की जगह देखेंगे। ILDASM से स्क्रीन शॉट साबित होता है कि,
अब, वर्तमान समस्या के लिए आ रहा है, सवाल में कोड की पंक्ति एक विधि वैकल्पिक पैरामीटर है कि के साथ एक समारोह बाध्य करने के लिए कोशिश कर रहा है। यदि सी # कंपाइलर को इसे संभालना है, तो यह सुनिश्चित करना होगा कि Func कुछ डिफ़ॉल्ट मानों को जानता है। हालांकि यह कंपाइलर द्वारा हासिल किया जा सकता था, यह Func के उद्देश्य को पूरी तरह से हरा देता है।
Func का उद्देश्य सामान्यीकृत और सरल तरीके से अनाम विधियों को संग्रहीत करने का एक तरीका प्रदान करना है। "reference
stackoverflow में एक और इसी तरह के सवाल पाया जा सकता है here
@Chris सिंक्लेयर के समाधान एक गुमनाम विधि है कि एक पैरामीटर लेता है और इस अनाम विधि के शरीर से TryMethod कॉल बनाने के द्वारा इस के आसपास काम करता है।
बस मुझे समझ में आता है कि 'Func tryMethodFunc => (value) => TryMethod (value) 'पर्याप्त नहीं है? –
हम्म, यह काम करता है। मान लीजिए कि मैं कार्यात्मक दृष्टिकोण के लिए बस नया हूं। आप रख सकते हैं कि एक उत्तर के रूप में और मैं इसे चिह्नित करूंगा। – Firestrand
केयान के जवाब को चिह्नित करने के लिए स्वतंत्र महसूस करें; यह बहुत व्यापक है और इसमें मेरा कामकाज शामिल है। –