trsing’s diary

勉強、読んだ本、仕事で調べたこととかのメモ。

2019-04-01から1ヶ月間の記事一覧

EFFECTIVE C# 6.0/7.0 読書メモ 項目16

C#

項目16 コンストラクタ内では仮想メソッドを呼ばないこと コンストラクタで仮想メソッドを呼び出したときの動作について。 class B { protected B() {VFunc();} protected virtual void VFunc() {Console.WriteLine("B内のVFunc");} } class Derived :B { pr…

C# LINQ Whereの戻り値メモ

C#

やりたかったこと LINQとnull条件演算子を合わせ、要素がなかったらnullを返してほしい。次の式でemp=nullになると期待。 >var lst = new List<int>(); >var emp = lst.Where(e => e > 0)?.Min(); シーケンスに要素が含まれていません + System.Linq.Enumerable.M</int>…

#項目15 不必要なオブジェクトの生成を避けること

C#

ガベージコレクタによるメモリ管理にはコストがかかる。 GCの実行条件はメモリの確保量と確保の頻度で決まる。メモリを確保すればするほどより頻繁にGCが実行され、非効率的。 参照型のオブジェクトを大量に使用すれば、アプリケーションのパフォーマンスに…

EFFECTIVE C# 6.0/7.0 読書メモ 項目14

C#

項目14 初期化ロジックの重複を最小化する コンストラクタの定義方法について 推奨方法 共通処理を行うためのコンストラクタを用意する コードの重複を避けることができ、コンストラクタ初期化子に対応するオブジェクトコードがより効率的なものとして生成さ…

トラブルメモ CX-Compolet/SYSMAC Gatewayのインストール

CX-Compolet/SYSMAC Gateway のインストールでいろいろ面倒なこと*1が起きたのでメモ やろうとしたこと Windows10にCX-Complet/SYSMAC Gateway 1.5.0*2をインストール、PLCとタグデータリンク通信。 まとめ 結論から WinPCapをちゃんとインストールする PLC…

EFFECTIVE C# 6.0/7.0 読書メモ 項目12、13

C#

項目12 メンバには割り当て演算子よりもオブジェクト初期化子を使用すること オブジェクト初期化子を使用するメリット コンストラクタに関わらずメンバ変数を確実に初期化することができる 将来新しいコンストラクタを追加した場合でも、メンバ変数の初期化…

EFFECTIVE C# 6.0/7.0 読書メモ 項目11

C#

11 .NETのリソース管理を理解する 優れた開発者となるには、実行環境におけるメモリやその他主要なリソースの管理方法を理解する必要がある。.NETの場合、メモリ管理やガーベジコレクタを理解すること。 ガベージコレクタ マネージヒープにおけるメモリを管…

EFFECTIVE C# 6.0/7.0 読書メモ 項目6~項目10

C#

項目6 文字列指定のAPIを使用しないこと 文字列ベースのAPIやライブラリのデメリット ・型の安全性が損なわれる ・ツールによるサポートもなくなる ・静的型付け言語における多数の利点を失う シンボル名が必要な時はnameof()式を利用するとよい。メリットは…