2

此代码来自Programming Windows,第六版书:

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());line 的语法。在类文档Start方法中定义为:

public static void Start(ApplicationInitializationCallback callback);

请解释一下这个带有 lambda 表达式的代码行是如何与Start方法定义相关的。

4

1 回答 1

1

lambda 只是编写ApplicationInitializationCallback实例的快捷方式

你可以检查这个委托的签名,看看它确实接受了一个参数并且什么都不返回。

在您的示例中,lambda 正是这样做的:接受一个参数 p,实例化一个 App 并且不返回任何内容。

如果不使用 lambda,你会这样写:

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

        private static void Start(ApplicationInitializationCallbackParams p)
        {
            new App();
        }
于 2013-04-17T08:06:11.123 回答