黙々とC#

"In a mad world of VBA, only the mad are sane" 『VBAという名の狂った世界で狂っているというのなら私の気は確かだ』

C#読書会 『C# ショートコードプログラミング 第2版』に関する感想など 第4章

大阪で定期的に開催されているC# 読書会での『C# ショートコードプログラミング 第2版』に関する感想などをまとめました。

C#ショートコードプログラミング 第2版 (MSDNプログラミングシリーズ)

C#ショートコードプログラミング 第2版 (MSDNプログラミングシリーズ)

4.1

-0 誤植
sortの意味が不明

IEnumerable<T>インターフェースでやりとりするのがgood.

サンプルコードは題意からそれていってる。
酒飲みながら書いた?


IQueryableは過去の遺物感あるので無視してOK

IEnumerableは、実体がないので注意(無限リストの場合ある)
引数や戻り型は ReadonlyList<> が安全?で楽。

4.2

最期のCODEでFA。

4.3

4.4

4.5

var list = new List(); list.Sort(Comparer.Default);

Comparer.Default プロパティ https://msdn.microsoft.com/ja-jp/library/azhsac5f(v=vs.110).aspx

4.6

14が抜けてる。 実行結果はOLD CODEのもの。

4.7

Enumerable.Repeat()の紹介

4.8

4.9

4.10

4.11

順序保持されたDictionary OrderedDictionary クラス

4.12

object x = new {“hoge”}; string ss = (string)x; は通らないけど、

object x = new string {“hoge”}; // 元の型情報を含ませていると string ss = (string[])x; //キャストできる

4.13

Array.ConvertAll()

4.14

OfTypeメソッド  型の判定とキャストをまとめて行う  "判定に成功したもののみ"をまとめたIEnumerableを返す cf. cast は変換失敗した場合に、例外発生

・VisualTreeから特定のコントロールを拾いたいとき ・ゲームで、オブジェクトに備えられた  特定のコンポーネントだけまとめて操作したい場合

非ジェネリックに対しても利用可能 → RegexのmatchCollectionにOfTypeをかけると、 LINQにチェーンできる。

4.15

AddRangeは便利なのでなければ自作すると便利。 ObservalCollectionにAddRangeを拡張メソッドで追加

外部(Luaスクリプト)連携の場合に 値が全てobjectで取得される場合がある。

C#ショートコードプログラミング 第2版 (MSDNプログラミングシリーズ)

C#ショートコードプログラミング 第2版 (MSDNプログラミングシリーズ)