2013-04-17 103 views
2

此代碼是從Windows程序設計,第六版書:Windows.UI.Xaml.Application.Start方法解釋

using Windows.ApplicationModel.Activation; 
using Windows.UI; 
using Windows.UI.Xaml; 
using Windows.UI.Xaml.Controls; 
using Windows.UI.Xaml.Media;  

namespace StrippedDownHello 
{ 
    public class App : Application 
    { 
     static void Main(string[] args) 
     { 
      Application.Start((p) => new App()); 
     } 

     ... 
    } 
} 

我無法理解Application.Start((p) => new App());行的語法。在類文檔Start方法定義爲:

public static void Start(ApplicationInitializationCallback callback); 

請解釋我如何與lambda表達式這行代碼是關係到Start方法定義。

回答

1

拉姆達只是快捷方式寫的ApplicationInitializationCallback

實例可以檢查該委託的簽名,並認爲它確實需要一個參數和返回任何結果。

在你的例子中,lambda正是這樣做的:接受一個參數p,實例化一個App並且不返回任何東西。

不使用拉姆達你會寫這樣的:

 static void Main(string[] args) 
     { 
      Application.Start(new ApplicationInitializationCallback(Start)); 
     } 

     private static void Start(ApplicationInitializationCallbackParams p) 
     { 
      new App(); 
     }