C#の新機能
今回、解説していく中で次のようなC#の新機能も紹介しました。
ラムダ式
ラムダ式はC# 3.0で導入されました。C# 6からは、メソッドや読み取り専用プロパティの本体に式形式のラムダを利用できるようになっています。
ラムダ式を使うと、デリゲートのためにいちいちメソッドを作らずに済みます。
例えば今回、「XAMLの意義」のところで次のようなコードを書きました。Button2_Clickメソッドの本体はラムダ式になっています。
button2.Click += Button2_Click; // イベントハンドラーを設定 ……省略…… private void Button2_Click(object sender, RoutedEventArgs e) => Text1.Text = "C#";
このButton2_Clickメソッドを削除し、イベントハンドラーを設定するところにラムダ式を直接書いてもよいのです(次のコード)。
button2.Click += (s,e) => Text1.Text = "C#"; // イベントハンドラーを設定
オブジェクト初期化子
オブジェクト初期化子もC# 3.0で導入された機能です。
オブジェクトのインスタンス化とプロパティへの代入を、まとめて書けます(次のコード)。打鍵量が減るのは嬉しいですね。そればかりではなく、匿名型を使うにはオブジェクト初期化子が必須になります。
// オブジェクト初期化子を使った書き方 var button2 = new Button // ボタンのインスタンス化 { // プロパティを設定 Content = "C#で組み立てたボタン", Margin = new Thickness( 0.0, 0.0, 0.0, 5.0), Padding = new Thickness(10.0, 5.0, 10.0, 5.0), }; // 従来の書き方では以下のようになります var button2 = new Button(); // ボタンのインスタンス化 // プロパティを設定 button2.Content = "C#で組み立てたボタン"; button2.Margin = new Thickness( 0.0, 0.0, 0.0, 5.0); button2.Padding = new Thickness(10.0, 5.0, 10.0, 5.0);
まとめ
今回は、.NET Framework/Coreの仕組みや、.NET Coreの将来、そしてWPFの特徴などを学びました。
WPFは、今後も.NET Coreの進化に歩調を合わせて、Windowsデスクトップアプリ用のGUIフレームワークとして使われ続けていくでしょう。Windowsの描画システム(DirectXとDWM)に革新が起こらない限りは安泰だともいえます。
また、WPFアプリの作り方である「XAMLでUIを定義して、コードとはデータバインディングやコマンドで結合する」という開発手法は、Windows 10のUWPやクロスプラットフォーム開発のXamarin.Formsとも共通します。iOS/Android用のアプリをUWP+Uno PlatformやXamarin.Formsで開発するときも、WPF開発のスキルが活かせるのです。
次回からは、XAMLでUIを作る方法を何回かに分けて解説していきます。ご期待ください。