此代码来自编程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());
行的语法。在类文档Start
中,方法定义为:
public static void Start(ApplicationInitializationCallback callback);
请解释一下这个lambda表达式的代码行如何与Start
方法定义相关。
答案 0 :(得分: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();
}