Tutorial C#login
Tutorial C#
pengarang:php.cn  masa kemas kini:2022-04-11 14:06:23

C# kaedah tanpa nama



Kami telah menyebut bahawa perwakilan digunakan untuk merujuk kepada kaedah yang mempunyai label yang sama dengannya. Dalam erti kata lain, anda boleh menggunakan objek perwakilan untuk memanggil kaedah yang boleh dirujuk oleh perwakilan.

Kaedah tanpa nama menyediakan teknik untuk menghantar blok kod sebagai parameter perwakilan. Kaedah tanpa nama adalah kaedah yang tidak mempunyai nama tetapi hanya badan.

Dalam kaedah tanpa nama anda tidak perlu menentukan jenis pulangan, ia disimpulkan daripada pernyataan pulangan dalam badan kaedah.

Sintaks untuk menulis kaedah tanpa nama

Kaedah tanpa nama diisytiharkan dengan mencipta contoh perwakilan menggunakan kata kunci wakilkan. Contohnya:

delegate void NumberChanger(int n);
...
NumberChanger nc = delegate(int x)
{
    Console.WriteLine("Anonymous Method: {0}", x);
};

Blok kod Console.WriteLine("Kaedah Tanpa Nama: {0}", x); ialah kandungan kaedah tanpa nama.

Perwakilan boleh dipanggil melalui kaedah tanpa nama atau kaedah bernama, iaitu dengan menghantar argumen kaedah kepada objek perwakilan.

Contohnya:

nc(10);

Contoh

Contoh berikut menunjukkan konsep kaedah tanpa nama:

using System;

delegate void NumberChanger(int n);
namespace DelegateAppl
{
    class TestDelegate
    {
        static int num = 10;
        public static void AddNum(int p)
        {
            num += p;
            Console.WriteLine("Named Method: {0}", num);
        }

        public static void MultNum(int q)
        {
            num *= q;
            Console.WriteLine("Named Method: {0}", num);
        }
        public static int getNum()
        {
            return num;
        }

        static void Main(string[] args)
        {
            // 使用匿名方法创建委托实例
            NumberChanger nc = delegate(int x)
            {
               Console.WriteLine("Anonymous Method: {0}", x);
            };
            
            // 使用匿名方法调用委托
            nc(10);

            // 使用命名方法实例化委托
            nc =  new NumberChanger(AddNum);
            
            // 使用命名方法调用委托
            nc(5);

            // 使用另一个命名方法实例化委托
            nc =  new NumberChanger(MultNum);
            
            // 使用命名方法调用委托
            nc(2);
            Console.ReadKey();
        }
    }
}

Apabila kod di atas disusun dan dilaksanakan, ia akan menghasilkan keputusan berikut:

Anonymous Method: 10
Named Method: 15
Named Method: 30

Laman web PHP Cina