パーフェクトC#

おー。かなりお久〜。
図書館でこやつ発見

[改訂新版] パーフェクトC# (PERFECT SERIES 1)

[改訂新版] パーフェクトC# (PERFECT SERIES 1)

買う気はないですが、色んな人の本を読みたかった&コントロールのことはほぼ初心者
だったので読んでます。
未だ半分も読めてません(厚みあるのよ、この本。てか重い。)が、色々と知らんことありました。

<ラベル>
 ピクチャーみたく、Zoomとかはできませんが、写真おける。使わんかな。
<グループボックス内のコントロール
 タブオーダがそないなるとですか・・・
<テキストボックス>
 オートコンプリート機能。そんなんあるんですか。WebBrowserのURL入力する際とかで出てくるやつ系。
<フォーム>
 AcceptButton,CancelButtonプロパティでEnter,ESCによるボタンイベントを選べる。
 まーtextBoxでEnter許容している場合とかがあるでしょうから、副作用ありますね。
チェックボックス
 Appearanceプロパティをbuttonにすると、リボンみたいに使える。
<ラジオ>
 同上
<リストボックス>
 MultiColumnプロパティでリストを複数列で表示できる。便利やけど他のアプリでみたことないので、使わんかな。
 SelectionModeプロパティでマルチ選択できる。これは使う。
<コンボボックス>
 DropDownStyleプロパティをDropDownListにすると凸る。あれ・・・6からできたっけな?最近コピペばっかで覚えてない。

こんなん書いても「へー」もらえるのはV[CB]6を未だ使っている(使わされている)方ぐらいかな。

続くといいながら、パワポは飽きた&もういいかな的で終了です。
代わりにまたこれ!

Effective C# 4.0

Effective C# 4.0

C#4.0と歌ってますので借りました(図書館で)が、前のは持ってます。忘れましたが。
じゃ重複するかもしれませんが、気になったとこだけ書きます。

  • constよりreadonlyを使おう。全ビルドならどうでもえーんやけどね。パフォーマンスは下がるが気になるレベルではない。
  • ToString()はオーバーライドしましょう。いいことあります。
  • as is 使いましょう。ってゆーかcastするか?
  • Propertyにしましょう。今なら{get; set;}でいけるし
  • メンバ変数の初期化はコンストラクタではなく、メンバ初期化子でやれ。変数宣言時にやれってこと。
  • さらに初期化を0でするなら、意味ないからやめよう。既に0だし。
  • メンバ初期化時に例外が発生するなら、コンストラクタで。try書けないから。
  • static変数の場合は、例外のことを考慮するとstaticコンストラクタで初期化しれ。
  • unmanagedリソースに対し、忘れる事無くDispose()するには、usingで囲むのが理想。例外にも対応できるし。
  • とはいえ・・・IDisposableインタフェースを実装していないリソースではコンパイルすら通らないが。

一旦うp

かなり前に買ってたんですが、ふと目に留まったのもあり以下の本を読みました。

いきなりスゴイ! PowerPoint【超実践! これ一冊で完全マスター】 (100%ムックシリーズ)

いきなりスゴイ! PowerPoint【超実践! これ一冊で完全マスター】 (100%ムックシリーズ)

まー我流で使ってたんですが、MVPの方の説明は実に深い。

  • 円や四角は楕円や長方形より、正円形や正方形の方が美しく見える。へー
  • 角丸は丸みが小さい方が整って見える。へー
  • 図形は整列させた法が説得力が増す。
  • 塗り色は用意されている配色を選ぶ
  • 画面の切り替えってやったことなかった。アニメーションばかりしてた・・・
  • 文字の効果>反射は使ったことなかったけど、いい感じ。
  • 背景次第で陰付きもいい。
  • 一つの画像を上下で割って、下からスライドインって思いつかんね。

続く

  • Firstメソッドにはパラメータありとなしがあって、ありを使えばWhere(条件).First-->First(条件)でいける
  • FirstOrDefaultを使えば、存在有無とデータ取得の両方を実現できる。Where()+First()-->FirstOrDefault()
  • SortしてFirstすれば最小値が取れるが、これはMinと同じ。しかし既にSortされたシーケンスならパフォーマンスはFirstの勝ち
  • パフォーマンスだけ考えれば、OrderBy()よりSort使うべし。一時的なソートならしゃーないけど。まっ量によるわね。

とか書いてるうちに読み終わった。さてどうしよう。ちょっと@ITでもいこっか。

  • 射影・・・・・Enumerable.Range(1, 9).Select(c=>c*2)
  • 射影*2・・・・Enumerable.Range(1, 9).SelectMany( (l)=>Enumerable.Range(1, 9), (l, r)=> l +"x"+r+"="(l*r))
  • SkipWhileとWhereの大きな違いは、SkipWhileはスタート位置がスキップされるだけで、その後はチェックされない
  • Take(10)・・・先頭から10個とる・・・カウンタいらない系
  • TakeWhile()・・先頭から条件成立するまでとる・・・所謂ストッパありき系
  • ORDER BY 1,2 ・・OrderBy().ThenBy()
  • ORDER BY 1, 2 DESC・・・ OrderBy().ThenByDesending()
  • SELECT UNION SELECT・・a.Union(b)

メソッド一覧はこんなもんで、以降はさらに各メソッドをマニアックに調べていくらしい。
うむうむ。

さて、ショートコーディングも読み終えたんで、積ん読より以下を今日からやってみます。

【省エネ対応】 C#プログラムの効率的な書き方

【省エネ対応】 C#プログラムの効率的な書き方

またもや川俣先生です。好きなんです。

  • Directory.GetFiles(dir)は全部拾うまで戻らない。Directory.EnumerateFiles(dir)ならIEnumerableを返すので早い
  • 並列クエリ(ParallelQuery)・・・難しい言葉が出てきた。イメージとして縦処理を横処理にして、夫々を別プロセッサ(別コア)で処理する感じ
  • int[] ar = { 1, 2, 3 }; ar.AsParallel()の戻りが並列クエリ
  • さらにar.AsParallel().AsEnumerable()で直列クエリに戻せる
  • 上記の方法では結果は順不同となるが、ar.AsParallel().AsOrderd()をかます事で、並列クエリの結果の順番を強制することができる
  • int[] ar = { 1, 2, 3 }; ar.Any(x=>x==3)とまで書かんでも、ar.Contains(3)が奇麗
  • 重複をさせたなければ ar.Distinct()やっぱ、この名前
  • 複数のシーケンスの差シーケンスを求める ar1.Except( ar2 ) こんな簡単でいいんでしょうか・・・

あーまだまだあるなー

読むとやるとでは、大きな違い。いざ書いてみると書けない。

  • Encoding.GetEncoding("Shift_JIS")も日本ロケールでの読み込み限定とすれば、Encoding.Defaultにできる
  • versionとれ。FileVersionInfo.GetVersionInfo( Assembly.GetExecutingAssembly().Location );

この後、Paralells Desktopが逝かれる(原因はBootCampフォルダを誰かがMountしっぱなしだったり、ディスクエラーが
原因だったのですけど)など色々ありましたが、ショートコードプログラミングの本自体は終了しました。
VS2010でのテスト駆動方法も書いてあったので、助かりました。

後は書きまくる&常にショートを心掛ける

ですね。敢えてC#で書けってことやね。