Anonim işlevler (C# Programlama Kılavuzu)Anonymous functions (C# Programming Guide)

Anonim işlev, temsilci türünün beklendiği her yerde kullanılabilecek bir "satır çizgisi" ifadesi veya ifadesidir.An anonymous function is an "inline" statement or expression that can be used wherever a delegate type is expected. Adlandırılmış bir temsilciyi başlatmak veya yöntem parametresi olarak adlandırılmış temsilci türü yerine geçmek için kullanabilirsiniz.You can use it to initialize a named delegate or pass it instead of a named delegate type as a method parameter.

Anonim bir işlev oluşturmak için lambda ifadesini veya anonim bir yöntemi kullanabilirsiniz.You can use a lambda expression or an anonymous method to create an anonymous function. Lambda ifadelerini satır içinde kod yazmak için daha kısa ve anlamlı bir şekilde kullanmanızı öneririz.We recommend using lambda expressions as they provide more concise and expressive way to write inline code. Anonim yöntemlerin aksine, bazı lambda ifadeleri türlerinde ifade ağacı türlerine dönüştürülebilir.Unlike anonymous methods, some types of lambda expressions can be converted to the expression tree types.

C'de Delegelerin Evrimi#The Evolution of Delegates in C#

C# 1.0'da, kodun başka bir yerinde tanımlanan bir yöntemle açıkça baş harfe başlayarak bir temsilci örneği oluşturdunuz.In C# 1.0, you created an instance of a delegate by explicitly initializing it with a method that was defined elsewhere in the code. C# 2.0, bir temsilci çağırmasında yürütülebilecek adsız satır lı ifade blokları yazmanın bir yolu olarak anonim yöntemler kavramını tanıttı.C# 2.0 introduced the concept of anonymous methods as a way to write unnamed inline statement blocks that can be executed in a delegate invocation. C# 3.0 anonim yöntemlere benzer ama daha anlamlı ve özlü lambda ifadeler tanıttı.C# 3.0 introduced lambda expressions, which are similar in concept to anonymous methods but more expressive and concise. Bu iki özellik topluca anonim işlevlerolarak bilinir.These two features are known collectively as anonymous functions. Genel olarak, .NET Framework sürüm 3.5 ve daha sonrasını hedefleyen uygulamalar da lambda ifadeleri kullanmalıdır.In general, applications that target version 3.5 and later of the .NET Framework should use lambda expressions.

Aşağıdaki örnek, delege oluşturmanın C# 1.0'dan C# 3.0'a evrimini göstermektedir:The following example demonstrates the evolution of delegate creation from C# 1.0 to C# 3.0:

class Test
{
    delegate void TestDelegate(string s);
    static void M(string s)
    {
        Console.WriteLine(s);
    }

    static void Main(string[] args)
    {
        // Original delegate syntax required 
        // initialization with a named method.
        TestDelegate testDelA = new TestDelegate(M);

        // C# 2.0: A delegate can be initialized with
        // inline code, called an "anonymous method." This
        // method takes a string as an input parameter.
        TestDelegate testDelB = delegate(string s) { Console.WriteLine(s); };

        // C# 3.0. A delegate can be initialized with
        // a lambda expression. The lambda also takes a string
        // as an input parameter (x). The type of x is inferred by the compiler.
        TestDelegate testDelC = (x) => { Console.WriteLine(x); };

        // Invoke the delegates.
        testDelA("Hello. My name is M and I write lines.");
        testDelB("That's nothing. I'm anonymous and ");
        testDelC("I'm a famous author.");

        // Keep console window open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}
/* Output:
    Hello. My name is M and I write lines.
    That's nothing. I'm anonymous and
    I'm a famous author.
    Press any key to exit.
 */

C# dili belirtimiC# language specification

Daha fazla bilgi için C# dil belirtiminin Anonim işlev ifadeleri bölümüne bakın.For more information, see the Anonymous function expressions section of the C# language specification.

Ayrıca bkz.See also