C# 6.0とは?静的インポート・自動プロパティ初期化子・nameof 演算子

公開日時:   更新日時:
C# 6.0とは?静的インポート・自動プロパティ初期化子・nameof 演算子
基本情報技術者試験の試験対策はこちら>>
SE
C# 6.0から追加された新機能では、ソースコードの記述が簡単になると聞きました。どのような機能があるのですか。
PM
そうですね。記述が簡単になりコードがスッキリとした印象になりました。

C# 6.0とは?


C# 6.0は2015年7月にリリースされたC#のバージョンです。この記事を執筆している時点でC#は9.0までがリリースされていますが、6.0では重要な機能が追加されているのでそこに絞って解説します。

特にC# 6.0はソースコードの記述を簡潔にできる機能が多く追加されています。この記事ではC# 6.0で追加された主な機能について分かりやすく紹介するので、是非ご覧下さい。

静的インポート

C#で標準で使える静的メンバーは、従来は以下のように「クラス名.メンバー名」で指定する必要がありました。

C# 6.0からはusing staticを使うことで以下のようにメンバー名だけで呼び出すことができます。ソースコードがすっきりしますね。

なお実行結果は「3.141592653589793」が表示されます。

例外フィルター

C# 6.0の例外フィルターとはtry~catch文で、when節でキャッチする例外に条件を付けることが出来る機能です、以下のように利用します。

実行結果は「例外bが発生しました。」と表示されます。例外発生時に渡されたメッセージをwhenで判定できることがわかりますね。

自動プロパティ初期化子

C#は3.0からクラスのプロパティの宣言を「プロパティ名 { get; set; }」といった簡潔な記述ができるようになりました。これを自動プロパティと言います。しかしプロパティに初期値を持たせたい場合は自動の記述をやめるか、以下のようにコンストラクタで代入する必要がありました。

C# 6.0からは以下のように自動プロパティの宣言に「= 初期値;」を記述するだけで、初期化できるようになりました。

式形式のメンバー

C# 6.0からは、クラスのメンバーのメソッドが一つの式のみの場合は「=>」を使って簡潔に記述できるようになりました。例えば以下のような場合は、

Testクラスを以下のように記述することができます。記述の量を減らすことができますね。なお実行結果は「12」が表示されます。

Null 条件演算子 その1

C#では「対象がnullではない時だけ処理をして、nullの場合はnullを返す」と言う処理が多くなります。その結果nullチェックのif文ばかりになってしまいます。以下がその例です。

Null 条件演算子 その2

上の例は生成したTestクラスのstringのメンバーの長さを取得して表示しますが(実行結果は「3」です)、StrLengthメソッド内部ではクラスや文字列がnullでないかif文でチェックしてくどくなっています。C# 6.0ならNull条件演算子でTestクラスが以下のように簡潔になります。

Null 条件演算子 その3

Null条件演算子はインデクサーに対しても使えます。以下の実行結果は「ス」になります。「テスト」を0から数えて1番目の文字ということですね。

文字列補間

C# 6.0以前は、文字列に変数の値を埋め込む場合、以下のようにFormatメソッドを利用していました。

実行すると「数字の3と4。」と表示されます。C# 6.0からこの記述を以下のように$を使って簡潔に書くことができるようになりました。

nameof 演算子

C# 6.0からnameofという演算子が追加され、クラスやフィールドなどの名前を文字列として取得できるようになりました。デバッグに活用できますね。以下のように利用します。

実行結果は以下の通りです。

Object
String
Test
value
DispValue

SE
using staticでメンバー名を呼び出すことができ、またNull 条件演算子が簡潔になり、記述しやすいことが良くわかりました。
PM
コードが簡潔に記述できると、すぐチェックができ、作業がしやすくなりますね。

C# 6.0の新機能を活用しよう

C# 6.0の主な新機能を解説しましたが、ご理解頂けましたでしょうか。

この記事を執筆した時点では9.0がリリースされているのでどれも新しい機能とは言えませんが、知らないものもあったかもしれませんね。是非活用してください。


FEnetへの登録は左下のチャットが便利です 経験者優遇! 最短10秒!

.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags