一時変数のインライン化
一時変数が簡単な式で初期化され、その後に代入されることがない場合は「一時変数のインライン化」を検討します。
以下にピクチャーボックスの中央に画像を表示するサンプルを示します。
// ビットマップを中央に描画
private void DrawCenter(Bitmap bitmap)
{
// ピクチャーボックス設定用ビットマップを生成
Bitmap canvas = new Bitmap(PictureBox1.Width, PictureBox1.Height);
// キャンバスのGraphicsオブジェクトを生成
Graphics g = Graphics.FromImage(canvas);
// キャンバスの幅と高さを設定
int canvasWidth = canvas.Width;
int canvasHeight = canvas.Height;
// ビットマップの幅と高さを設定
int bitmapWidth = bitmap.Width;
int bitmapHeight = bitmap.Height;
// キャンバスの中央にビットマップを描画
g.DrawImage(bitmap, (canvasWidth / 2) - (bitmapWidth / 2),
(canvasHeight / 2) - (bitmapHeight / 2));
// Graphicsオブジェクトのリソースを解放
g.Dispose();
// ピクチャーボックスに描画
PictureBox1.Image = canvas;
}
この例ですと「canvasWidth」、「canvasHeight」、「bitmapWidth」、「bitmapHeight」の一時変数が「簡単な式で初期化され、その後に代入されることがない場合」に該当すると思います。
それでは「一時変数のインライン化」を実施してみましょう。
●
一時変数のインライン化後のコード
// ビットマップを中央に描画
private void DrawCenter(Bitmap bitmap)
{
// ピクチャーボックス設定用ビットマップを生成
Bitmap canvas = new Bitmap(PictureBox1.Width, PictureBox1.Height);
// キャンバスのGraphicsオブジェクトを生成
Graphics g = Graphics.FromImage(canvas);
// キャンバスの中央にビットマップを描画
g.DrawImage(bitmap, (canvas.Width / 2) - (bitmap.Width / 2),
(canvas.Height / 2) - (bitmap.Height / 2));
// Graphicsオブジェクトのリソースを解放
g.Dispose();
// ピクチャーボックスに描画
PictureBox1.Image = canvas;
}
コードはすっきりしましたが、まだ分かりづらいですね。次回は「説明用変数の導入」を試してみましょう。
コメントはまだありません。