匿名方法和代理的另外两个小小的特性

1。使用匿名方法的时候,可以访问调用它的代码块里面的代码。如:

这里的exploedTimes就可以被匿名方法访问

public static void Main(string[] args)

        {

            int exploedTimes = 0;

            Car c = new Car();

            c.Exploed += new Car.CareExploedHandle<Car.CarEventArgs>(c_Exploed);

            c.Exploed += delegate(object sender, Car.CarEventArgs e)

            {

                exploedTimes++;

                Console.WriteLine(exploedTimes.ToString());

                Console.WriteLine("annoymous method" + e.msg);

            };

}

2。使用代理或者事件的时候,不必new xxx代理出来,可以直接写方法名。但是方法的签名要和对应的代理相同,不然会抛出一个编译时错误。

如:下面加入事件的时候,没有new一个代理出来哦。有点象asp.net中前台的代码。比如<asp:button runat = "server" Id="b1" Onclik="b1_Click"/>

class Program

    {



        public static void Main(string[] args)

        {

            

            Car c = new Car();

            

            c.Exploed += c_Exploed;

            for (int i = 0; i < 10; i++)

            {

                c.Accelerate(100);

            }



            

        }



        static void c_Exploed(object sender, Car.CarEventArgs e)

        {

            Console.WriteLine(e.msg);

        }



        



       

    }
;