15. 不必要なオブジェクト生成を避けること¶
ヒープオブジェクト:いろんなことができる。スタックは、
参照型のオブジェクトをメソッド中でローカル変数として大量に使用s流ほど、アプリケーショのパフォーマンスに大きな影響を与えることになる。
GCの実行条件はメモリの確保料と確保の頻度!GCにできるだけ仕事させないこと!
protected override void OnPaint(PaintEventArgs e) { using (Font MyFont = new Font("Arial",10.0f){ e.Graphics.DrawString(DateTime.Now.ToString(), myFont, Brushes.Black,newPointF(0, 0)); } base.OnPaint(e); }
Fontオブジェクトが毎回破棄されなければならなくなる。 その代わりメンバに昇格させると良い。
private readonly Font myFont = newFont("Arial", 10.0f); protected override void OnPaint(PaintEventArgs e) { e.Graphics.DrawString(DateTime.Now.ToString(), myFont, Brushes.Black,newPointF(0, 0)); base.OnPaint(e); }
Fontオブジェクトのように、IDisposableインターフェイスを実装するオブジェクトをローカル変数からメンバ変数に昇格させる場合は、暮らす自身にもIDisposableインタフェースを実装するべき。