आपके प्रश्न का उत्तर "इनलाइन फ़ंक्शन" के आधार पर हां और नहीं में है, जो आपके द्वारा निर्भर करता है। यदि आप इस शब्द का उपयोग कर रहे हैं जैसे कि यह C ++ विकास में उपयोग किया जाता है तो उत्तर नहीं है, आप ऐसा नहीं कर सकते हैं - यहां तक कि एक लंबोदर अभिव्यक्ति एक फ़ंक्शन कॉल है। हालांकि यह सच है कि आप सी # में फ़ंक्शन घोषणाओं को बदलने के लिए इनलाइन लैम्ब्डा अभिव्यक्तियों को परिभाषित कर सकते हैं, फिर भी कंपाइलर एक अनाम फ़ंक्शन बना रहा है।
यहाँ कुछ वास्तव में सरल कोड है जो मैं इसका परीक्षण करता था (VS2015):
static void Main(string[] args)
{
Func<int, int> incr = a => a + 1;
Console.WriteLine($"P1 = {incr(5)}");
}
संकलक क्या उत्पन्न करता है? मैंने ILSpy नामक एक निफ्टी टूल का उपयोग किया जो वास्तविक IL असेंबली को दिखाता है। एक नज़र रखना (मैंने बहुत सारे वर्ग सेटअप सामान छोड़ दिए हैं)
यह मुख्य कार्य है:
IL_001f: stloc.0
IL_0020: ldstr "P1 = {0}"
IL_0025: ldloc.0
IL_0026: ldc.i4.5
IL_0027: callvirt instance !1 class [mscorlib]System.Func`2<int32, int32>::Invoke(!0)
IL_002c: box [mscorlib]System.Int32
IL_0031: call string [mscorlib]System.String::Format(string, object)
IL_0036: call void [mscorlib]System.Console::WriteLine(string)
IL_003b: ret
उन पंक्तियों को देखें IL_0026 और IL_0027? वे दो निर्देश संख्या 5 को लोड करते हैं और एक फ़ंक्शन को कॉल करते हैं। फिर IL_0031 और IL_0036 प्रारूप और परिणाम प्रिंट करें।
और यहाँ फ़ंक्शन कहा जाता है:
.method assembly hidebysig
instance int32 '<Main>b__0_0' (
int32 a
) cil managed
{
.maxstack 8
IL_0000: ldarg.1
IL_0001: ldc.i4.1
IL_0002: add
IL_0003: ret
}
यह वास्तव में एक छोटा कार्य है, लेकिन यह एक कार्य है।
क्या यह अनुकूलन के लिए किसी भी प्रयास के लायक है? नाह। हो सकता है कि यदि आप इसे हजारों बार एक सेकंड में बुला रहे हों, लेकिन यदि प्रदर्शन इतना महत्वपूर्ण है, तो आपको कार्य करने के लिए C / C ++ में लिखे गए मूल कोड पर विचार करना चाहिए।
मेरे अनुभव में पठनीयता और स्थिरता हमेशा कुछ माइक्रोसेकंड गति में लाभ के लिए अनुकूलन की तुलना में लगभग अधिक महत्वपूर्ण है। अपने कोड को पठनीय बनाने और चर स्कूपिंग को नियंत्रित करने और प्रदर्शन के बारे में चिंता न करने के लिए फ़ंक्शन का उपयोग करें।
"समयपूर्व अनुकूलन प्रोग्रामिंग में सभी बुराई (या कम से कम अधिकांश) की जड़ है।" - डोनाल्ड नथ
"एक प्रोग्राम जो सही ढंग से नहीं चलता है उसे तेज़ दौड़ने की ज़रूरत नहीं है" - मुझे