دالات المجهول ( ارشادات برمجة C# )

كما هو موضح في مكان آخر, التفويض هو نوع يلتف استدعاء الأسلوب. A تفويض يمكن تمرير مثيل بين أساليب مثل نوع و يمكن استدعاء مثل أسلوب.
انتقال مثيل التفويض بين الأساليب مثل النوع، و يمكن استدعاءه مثل الأسلوب. دالة المجهول هي كشف أو تعبير "مضمن" يمكن استخدامه أينما يتوقع وجود نوع التفويض. يمكنك استخدامه إلى تهيئة تفويض مسمى أو تمريره بدلاً من نوع مفوض مسماة كمعلمة أسلوب.

هناك نوعين من الدالات المجهولة,التي تمت مناقشتها بشكل مستقل في المواضيع التالية:

تطور المفوضين في C#‎

في C# 1.0، يمكنك انشاء مثيل من أحد المفوضين بشكل صريح بتهيئته بالطريقة التي تم تعريفها في أماكن أخرى في التعليمات البرمجية. عرض مفهوم أساليب المجهول كطريقة لكتابة كتل كشف الغير مسماه المضمنة التي يمكن تنفيذها في استدعاء مفوض. C# 3.0 تقدم تعبيرات لامدا المشابهة في المفهوم لأساليب المجهول ولكنها معبرة أكثر ومختصرة. تعرف هذه الميزات إجمالاً باسم دالات مجهول. بشكل عام، التطبيقات التي تستهدف الإصدار 3.5 والاحدث من .NET Framework عليك استخدام تعبيرات لامدا.

ويوضح المثال التالي تطور إنشاء المفوض من C# 1.0 إلى 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

لمزيد من المعلومات، راجع مواصفات لغة #C. مواصفات اللغة هي المصدر النهائي لبناء جملة C# واستخدامها.

راجع أيضًا:

المرجع

عبارات وتعبيرات ومشغلات التوصيل ( ارشادات برمجة C# )

التفويضات (دليل البرمجة لـ #C)

المبادئ

أشجار التعبير (C# و Visual Basic)