数週間前、私は C#6 のいくつかの新機能についてさまざまな場所で読みました。まだ読んでいない方でも一気に読んでいただけるよう、まとめてみました。中には期待したほど魔法的ではないものもあるかもしれませんが、現時点ではそれが単なるアップデートです。
VS2014をダウンロードするか、ここからvisual studio2013のRoslynパッケージをインストールすることで入手できます。
それでは、見てみましょう:
1. $identifier
$ の役割は、文字列のインデックス作成を簡素化することです。これは、内部で正規表現一致を使用する C# のインデックス作成の動的な性質とは異なります。例は次のとおりです:
var col = new Dictionary<string, string>() { $first = "Hassan" }; //Assign value to member //the old way: col.$first = "Hassan"; //the new way: col["first"] = "Hassan";
2. 例外フィルター
例外フィルターは VB コンパイラーで長い間サポートされてきましたが、現在は C# でもサポートされています。例外フィルターを使用すると、開発者は特定の条件に対する catch ブロックを作成できます。 catch ブロック内のコードは、条件が満たされた場合にのみ実行されます。これは、私のお気に入りの機能の 1 つです。例は次のとおりです。
try { throw new Exception("Me"); } catch (Exception ex) if (ex.Message == "You")
3. catch ブロックとfinally ブロックの await キーワード
私の知る限り、 C# 5 の catch およびfinally コード ブロックで await キーワードが使用できない理由は、どのように記述されても使用できないためです。開発者は I/O 操作ログを表示することがよくあり、キャプチャされた例外情報をログに記録するには、これを非同期で行う必要があるため、これは良いことです。
try { DoSomething(); } catch (Exception) { await LogService.LogAsync(ex); }
4. 式の宣言
この機能を使用すると、開発者は式の中で変数を定義できます。これはシンプルですが実用的です。以前は、asp.net を使用して多くの Web サイトを構築していました。これが私がよく使用するコードです:
long id; if (!long.TryParse(Request.QureyString["Id"], out id)) { }
最適化されたコード:
if (!long.TryParse(Request.QureyString["Id"], out long id)) { }
この宣言メソッドの変数のスコープは、C# で宣言された変数のスコープと同じです。通常の方法で。
5. Staticの使用
この機能を使用すると、using ステートメントで特定の型を指定でき、その後、この型のすべての静的メンバーを後続の句で使用できます。
using System.Console; namespace ConsoleApplication10 { class Program { static void Main(string[] args) { //Use writeLine method of Console class //Without specifying the class name WriteLine("Hellow World"); } } }
6. 属性の自動初期化:
C# 6 では、宣言場所のフィールドなどのプロパティが自動調整されます。ここで知っておく必要がある唯一のことは、この初期化によって内部で setter メソッドが呼び出されるわけではないということです。以下は例です:
public class Person { // You can use this feature on both //getter only and setter / getter only properties public string FirstName { get; set; } = "Hassan"; public string LastName { get; } = "Hashemi"; }
7. メインコンストラクター:
ははは、メイン。コンストラクター コンストラクターを使用すると、コンストラクターのパラメーターを取得し、それをクラスのフィールドに設定して後続の操作をサポートする手間が省けます。これは非常に便利です。この機能の主な目的は、初期化にコンストラクター パラメーターを使用することです。メイン コンストラクターが宣言されている場合、他のすべてのコンストラクターは :this() を使用してこのメイン コンストラクターを呼び出す必要があります。
最後に次の例を示します:
//this is the primary constructor: class Person(string firstName, string lastName) { public string FirstName { get; set; } = firstName; public string LastName { get; } = lastName; }
メイン コンストラクターはクラスの先頭で呼び出されることに注意してください。