मेरे पास एक विधि है जो Action<string>
(नीचे सरल उदाहरण देखें) ले रही है, लेकिन कॉलिंग विधि में जहां Action
का निर्माण किया गया है, Resharper यह सुझाव दे रहा है कि एक स्थानीय फ़ंक्शन इस्तेमाल किया गया।इनपुट पैरा के रूप में किसी क्रिया पर स्थानीय फ़ंक्शन का उपयोग करना
क्रियाओं के स्थान पर स्थानीय कार्यों का उपयोग करने के लिए अनुशंसित अभ्यास क्या हैं, क्या इससे कोई फर्क पड़ता है, या क्या इसके बारे में पता होना चाहिए?
public void Caller()
{
string holder;
Action<string> act = s => holder = s;
void SetHolder(string s) => holder = s;
DoStuff(act);
DoStuff(SetHolder);
}
public void DoStuff(Action<string> setHolder)
{
setHolder("holders new string");
}
आपके उत्तर ने मुझे और अधिक उत्सुक बना दिया क्योंकि मैंने पढ़ा था [यहां] (https://www.danielcrabtree.com/blog/84/c-sharp-7-local-functions-are-funcs-too) कि अगर कोई स्थानीय फ़ंक्शन स्थैतिक है जब तक कि यह 'इस' तक पहुंच न जाए, अन्यथा वे उदाहरण विधियां हैं। मैंने sharplab.io (मुझे अब तक sharplab के बारे में नहीं पता था) में एक वैकल्पिक उदाहरण बनाया है (लिंक के लिए बहुत लंबा होने के कारण अगली टिप्पणी देखें) जिसने 'एक्शन' के आस-पास कुछ' शून्य 'जांच की लेकिन नहीं स्थानीय समारोह क्या आप अंतर पर विस्तार कर सकते हैं? – Ayb4btu
[वैकल्पिक उदाहरण] (https://sharplab.io/#v2:CYLg1APgAgDABFAjAbgLACgoGYECY4DCcA3hnOQjlACyECGANgwKYBOAFAJQanoUKJcAHiQwAfHDoBjAC5wAvHADOCiUgCc7JZzR8KNOAGVmMgBIB7BsDbtRyzqoGbtushQAi5wzICuAMz92aRkdN3JPb39A4zNLa1ZQ9ABfDAxsBFoI3wDbQRFEcWUTCys2bnRefiViuJsAImAASyUABwY6AE84RoA7OClzHqVLZjrElOSgA===) का उपयोग क्या एक 'स्थिर Action' और स्थानीय समारोह के बराबर है। – Ayb4btu
मुझे लगता है कि मैंने क्लिक किया कि शून्य जांच क्यों है। 'Action' इसलिए यह, के रूप में यह नहीं कर सकता है अशक्त के लिए जांच की जानी चाहिए नहीं है एक चर रहा है और अशक्त हो सकता है, जबकि स्थानीय समारोह सही शब्दावली, बयानों के आयोजन के लिए एक वाक्य-कंटेनर की कमी के लिए, है, आंतरिक रूप से शून्य हो। – Ayb4btu