ホームページ  >  記事  >  バックエンド開発  >  本当に学ぶべき (そして使用すべき!) C# の 10 の機能

本当に学ぶべき (そして使用すべき!) C# の 10 の機能

高洛峰
高洛峰オリジナル
2017-02-08 13:24:151136ブラウズ

C# の学習を開始する場合、または知識を拡大することに決めた場合は、コードを簡素化し、エラーを回避し、時間を大幅に節約するために、これらの便利な言語機能を学習する必要があります。

1) async/await

async/await-pattern を使用すると、ブロック操作を実行しながら UI/現在のスレッドのブロックを解除できます。 async/await パターンは、何か (Web リクエストなど) が実行をブロックした場合でも、コードの実行を継続できるようにすることで機能します。


2) オブジェクト/配列/コレクション初期化子

オブジェクト、配列、コレクション初期化子を使用すると、クラス、配列、コレクションのインスタンスを簡単に作成できます:


//いくつかのデモ クラス publicclassEmployee{ publicstringName { get; set;} publicDateTime StartDate { get; set;}} //初期化子を使用して従業員を作成します Employee emp = newEmployee {Name= "John Smith", StartDate=DateTime.Now()};


上記の例これは単体テストでのみ役立ちますが、クラスのインスタンスはコンストラクターを使用して作成する必要があるため、他のコンテキストでは使用しないでください。


3) ラムダ、述語、デリゲート、クロージャ

多くの場合 (Linq を使用する場合など)、これらの機能は実際に必要となるため、いつどのように使用するかを必ず学習してください。


4) ?? (null 合体演算子)

?? - 演算子は null でない限り左側を返します:


//nullvarsomeValue の場合があります= service.GetValue(); vardefaultValue = 23//someValue が null の場合、結果は 23 になります varresult = someValue ??defaultValue;


?? – 演算子は連鎖できます:

stringanybody = parm1 ?? ?? globalDefault;






5 )$ "{x}" (文字列補間) - C#6


これは、効率的かつエレガントな方法で文字列を組み立てることができる C#6 の新機能です:


// Old method varsomeString = String.Format( "一部のデータ: {0}、その他のデータ: {1}", someVariable, someOtherVariable); // 新しいメソッド varsomeString = $"一部のデータ: {someVariable}、その他のデータ: { someOtherVariable }";

C# 式を中括弧で囲むことができるため、この文字列補間が非常に強力になります。


6)?.(Null 条件演算子) - C#6


null 条件演算子は次のように機能します:


//Null ifcustomer orcustomer.profile orcustomer.profile.age isnullvar currentAge = customer?. profile?.age;

NullReferenceExceptions はもう不要です。


7) nameof Expression - C#6


新しい nameof-expression は重要ではないように見えるかもしれませんが、実際にはその価値があります。 ReSharper などの自動リファクタリング ツールを使用する場合、メソッド パラメータを名前で参照する必要がある場合があります:


publicvoid PrintUserName( UsercurrentUser){ //名前を変更すると、リファクタリング ツールは以下の現在のユーザーへのテキスト参照を見逃す可能性があります if( currentUser == null) _logger.Error( "引数 currentUser が指定されていません"); //...}


次のように使用する必要があります...

publicvoidPrintUserName(User currentUser){ / /リファクタリング ツールはこれを見逃すことはありません...if(currentUser == null) _logger.Error( $"Argument {nameof(currentUser)} is not provided"); //...} 8) 属性初期化子 - -C #6


プロパティ初期化子を使用すると、プロパティの初期値を宣言できます:


publicGuidId{ get; } = Guid. NewGuid();コンテナーの利点の 1 つは、コレクションを宣言できないことです。そのため、プロパティが不変になります。プロパティ初期化子は、C#6 のプライマリ コンストラクター構文で動作します。


9) as および is 演算子


is 演算子は、インスタンスが特定の型であるかどうかを制御するために使用されます。たとえば、変換が可能かどうかを確認したい場合:


if( PersonisAdult){ //do things}


as 演算子を使用して、インスタンスをクラスに変換してみます。変換できない場合は null を返します:


SomeType y = x asSomeType; if(y != null){ //do things} 10) yield キーワード


yield キーワードは以下を提供します。エントリの IEnumerable インターフェイス。次の例では、2 から 8 までのすべての 2 のべき乗 (たとえば、2,4,8,16,32,64,128,256) が返されます。 = 0; i < exponent; i++) { result = result *数値; }}


利回りは、正しく使用すると非常に強力になります。これにより、オブジェクトのコレクションを遅延生成できます。つまり、システムはコレクション全体を列挙する必要がなく、要求に応じて実行するだけです。

本当に学ぶべき (そして使用すべき!) C# の 10 の関数に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。