"Satır içi işlev" ile ne kastettiğinize bağlı olarak sorunuzun yanıtı evet ve hayırdır. Eğer terimi C ++ geliştirmede kullanıldığı gibi kullanıyorsanız, cevap hayırdır, bunu yapamazsınız - bir lambda ifadesi bile bir işlev çağrısıdır. C # 'da işlev bildirimlerini değiştirmek için satır içi lambda ifadeleri tanımlayabileceğiniz doğru olsa da, derleyici yine de anonim bir işlev oluşturmaya devam eder.
İşte bunu test etmek için kullandığım gerçekten basit bazı kodlar (VS2015):
static void Main(string[] args)
{
Func<int, int> incr = a => a + 1;
Console.WriteLine($"P1 = {incr(5)}");
}
Derleyici ne üretir? Üretilen gerçek IL derlemesini gösteren ILSpy adlı şık bir araç kullandım. Bir göz atın (birçok sınıf kurulumunu ihmal ettim)
Bu Ana işlevdir:
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 ve IL_0027 satırlarını görüyor musunuz? Bu iki talimat 5 sayısını yükler ve bir işlevi çağırır. Sonra IL_0031 ve IL_0036 biçimlendirin ve sonucu yazdırın.
Ve işte adı verilen işlev:
.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
}
Bu gerçekten kısa bir işlev, ancak bir işlev.
Bu, optimize etmek için herhangi bir çabaya değer mi? Hayır. Belki saniyede binlerce kez çağırıyorsanız, ancak performans bu kadar önemliyse, işi yapmak için C / C ++ ile yazılmış yerel kodu çağırmayı düşünmelisiniz.
Deneyimlerime göre, okunabilirlik ve sürdürülebilirlik, birkaç mikrosaniye hız kazanımı için optimize etmekten neredeyse her zaman daha önemlidir. Kodunuzu okunabilir hale getirmek ve değişken kapsamını kontrol etmek için işlevleri kullanın ve performans konusunda endişelenmeyin.
"Erken optimizasyon, programlamadaki tüm kötülüklerin (veya en azından çoğunun) köküdür." - Donald Knuth
"Düzgün çalışmayan bir programın hızlı çalışması gerekmez" - Me