2

このコードは、Programming Windows, Sixth Edition book からのものです。

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);

ラムダ式を含むこのコード行がStartメソッド定義にどのように関連しているかを説明してください。

4

1 に答える 1

1

ラムダは、ApplicationInitializationCallbackのインスタンスを記述するための単なるショートカットです

このデリゲートの署名を確認すると、実際にパラメーターを取り、何も返さないことがわかります。

あなたの例では、ラムダはまさにこれを行っています: パラメータ p を取り、App をインスタンス化し、何も返しません。

ラムダを使用しない場合は、次のように記述します。

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

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