分配与创建新委托

在MSDN 中关于 Invoke 的示例中,我在设置委托变量时发现了奇怪的表达式:


为什么他们使用创建新对象的语法:


myDelegate = new AddListItem(AddListItemMethod);

而不是分配


myDelegate = AddListItemMethod;

这些表达有什么区别?表达的意思是new AddListItem(...)什么?


全码:


 public class MyFormControl : Form

   {

      public delegate void AddListItem();

      public AddListItem myDelegate;

      private Button myButton;

      private Thread myThread;

      private ListBox myListBox;

      public MyFormControl()

      {

         myButton = new Button();

         myListBox = new ListBox();

         myButton.Location = new Point(72, 160);

         myButton.Size = new Size(152, 32);

         myButton.TabIndex = 1;

         myButton.Text = "Add items in list box";

         myButton.Click += new EventHandler(Button_Click);

         myListBox.Location = new Point(48, 32);

         myListBox.Name = "myListBox";

         myListBox.Size = new Size(200, 95);

         myListBox.TabIndex = 2;

         ClientSize = new Size(292, 273);

         Controls.AddRange(new Control[] {myListBox,myButton});

         Text = " 'Control_Invoke' example";

         myDelegate = new AddListItem(AddListItemMethod);

      }

      static void Main()

      {

         MyFormControl myForm = new MyFormControl();

         myForm.ShowDialog();

      }

      public void AddListItemMethod()

      {

         String myItem;

         for(int i=1;i<6;i++)

         {

            myItem = "MyListItem" + i.ToString();

            myListBox.Items.Add(myItem);

            myListBox.Update();

            Thread.Sleep(300);

         }

      }

      private void Button_Click(object sender, EventArgs e)

      {

         myThread = new Thread(new ThreadStart(ThreadFunction));

         myThread.Start();

      }

      private void ThreadFunction()

      {

         MyThreadClass myThreadClassObject  = new MyThreadClass(this);

         myThreadClassObject.Run();

      }

   }


森栏
浏览 129回答 1
1回答

侃侃尔雅

没有区别。该new语法什么需要很久以前,从那时起他们就C#编译器足够聪明来创建此代码时,你指定的方法委托变量。
打开App,查看更多内容
随时随地看视频慕课网APP