C#に関するliszworksのブックマーク (4)

  • 【ワレコC#】「int?」はNull許容型 「?.」はNull条件演算子 「??」はNull合体演算子【ヌル三兄弟】

    ヌル三兄弟とだんご3兄弟の関連性は分からない。 ヌル許容型とヌル条件演算子 上記のif判定によるnullチェックを簡単に一行で書く方法がこれだ! List<string> arr = null; int? len = arr?.Count; いきなりクエスチョンマーク?が二個も出てきたぞ‼ もう訳分からんと言う人もいるかもしれない。 実は、昔のワテも訳分からんかった。 まず、 int? len の部分の ? の意味であるが、通常の int型にクエスチョンマークを付けるとヌル許容型の変数宣言となる。 つまり len と言う変数には整数だけでなく null と言う値も代入出来るようになる。 ちなみに string型は元々 null許容型なのでそのままでもnullを代入出来る。 一方、右辺の = arr?.Count の部分であるが、変数 arr がもし null なら ?. 以降の処理はせずに

    【ワレコC#】「int?」はNull許容型 「?.」はNull条件演算子 「??」はNull合体演算子【ヌル三兄弟】
    liszworks
    liszworks 2019/12/06
    全然知らんかった…… ・int? : nullでもいいint ・i = arr?.Count : nullかも知れないやつのプロパティ扱う ・i = arr?.Count ?? 0 : nullだったら0あげる なるほどすぎる……
  • C#の排他制御 - UpgradeableReadLock

    .NET4.0/C#5.0以降、どんどん非同期処理に関する機能が増強されてきています。 特にasync/await構文なんかは、今までは非同期で書こうとすると非常に読みにくいコードになっていたのを、上から下へ流れるようにプログラムを書くだけで非同期処理が実現できてしまうという非常に画期的なものでした。 しかし、そこには非同期処理特有の問題が付きまといます。いくら簡単に非同期処理が書けるからと言って、何も知らずに非同期処理を確実に動かすことはできないのです。 さて、非同期処理で注意しなければならないことの1つとして、「データの整合性」が挙げられます。 非同期処理は複数のスレッドが同時に走るわけですから、それぞれのスレッドから1つのデータにアクセスした場合どのような結果になるか、ということを常に想像しながらコードを書かなければなりません。 そして、必要ならば排他制御を行い、片方のスレッドからデ

    liszworks
    liszworks 2019/10/03
    C#の排他制御。にわかだったので全然知らなかったのでメモ。
  • Visual Studioのコード分析機能を利用してコードの品質を上げよう

    コード分析とは 継続してアプリケーションを開発していく中では、コードの保守性も重要になってきます。特にチームの開発では、メンバーのスキルにバラつきがあるため、中にはあまり良いとは言えない品質のコードが書かれてしまうこともあります。 こういった問題に対処するための方法にはいくつかあります。有識者、他のメンバーによるレビューを通じて直していくという方法もその一つです。しかし、せっかくの貴重なレビューの場を、ある意味些末な「コーディングルール」というようなものの指摘に費やすのは、非常にもったいないことです。レビューでは機能要件に沿った内容やコードの設計、構造といった、「人でしかできない」ことに注力したいものです。 そこで、「コーディングルール」のような決まりきったものについては、ツールを使って検出し、直していきましょう。そのためのツールの一つが、今回紹介するVisual Studioに搭載された

    Visual Studioのコード分析機能を利用してコードの品質を上げよう
  • ドキュメントがないコードの保守を任されても安心 ~テストコードを網羅的に自動生成するVisual Studio 2015 Enterpriseの「インテリテスト」機能

    システム開発におけるテストの重要性は繰り返し叫ばれるものの、実際にテストを記述するというのは意外に面倒なものです。プログラムを書くのは楽しくても、すべてのケースを網羅するテストコードを書くのは面倒、という方も多いでしょう。Visual Studio 2015 Enterpriseのインテリテスト機能を使えば、プログラム全体を網羅するテストケースが簡単に自動生成できます。また、デバッグに便利ないくつかの新機能についても解説します。 対象読者 テスト開発に興味はありながらも、テストファーストとまでは思い切れない方 ドキュメントもコメントもないプログラムの保守を突然任されて頭を悩まされている開発者 必要な環境 連載では以下の環境でサンプルを実行します。 Windows 7(8、8.1も対応) Visual Studio 2015 RC Enterprise(一部機能はVisual Studio

    ドキュメントがないコードの保守を任されても安心 ~テストコードを網羅的に自動生成するVisual Studio 2015 Enterpriseの「インテリテスト」機能
  • 1