C# を使って開発した経験は半年もないですが、その間「コンソールアプリ」「GUI の Windows アプリ」「ASP.NET を使った Web アプリ」といろいろなアプリを作りました。
開発期間中に教えてもらった情報やテクニックをメモっていたので重要な部分を引用して参考サイトをまとめておこうと思います。
既に情報が古かったり、最新の .NET Framework や VisualStudio では改善されていたりするものもあるかもしれませんのでご注意を。
ボックス化とアンボックス化
簡単な代入と比べて、ボックス化およびボックス化解除は負荷の大きいプロセスです。値型をボックス化するときは、新しいオブジェクトを割り当てて構築する必要があります。
デストラクタ
空のデストラクタは使用しないでください。
デストラクタがクラスに存在するときは、エントリが Finalize キューで作成されます。
デストラクタを呼び出すとガベージコレクタが呼び出され、このキューを処理します。
デストラクタが空の場合は、これによってパフォーマンスが余計に低下します。
C#のコードを高速化するための方法
構造体を使うかクラスを使うかの境界線はそのサイズで決まるようなのですが、その境界は意外と低くて16バイト以上のものはクラスを使ったほうがいいよう。
ContainsKey+インデクサよりTryGetValueの方が早い
試しに測ってみたけど物凄い差・・・。
やはり例外処理が重いというのは間違いないようで・・・。
文字列の比較は Equalsメソッドではなく ==演算子で行う
文字列を比較する方法として、C#では Java などと同じく、Equals メソッドと、== 演算子が利用できますが、少なくとも C# の環境では == 演算子を利用したほうがよいです。
Enum と string の変換コード
C++などに見られる単なる数値の別名にすぎない列挙型よりも強力であり、もしかしたら、これらの言語で文字列として処理していたものが、C#では列挙型で処理すべきものになるかもしれない。
C#&VBジェネリック超入門(後編)
ジェネリックの仕組みは、クラス以外にもメソッドやデリゲートにも適用できます。
文字列連結のスピード
結論。
StringBuilder激速。これからはStringBuilder。
Splitの速度
Splitの使用例がいろいろと
メッセージ・ボックスを表示するには?
プログラムからメッセージ・ボックスを表示するには、MessageBoxクラス(System.Windows.Forms名前空間)のShowメソッドを呼び出す。