一時変数のインライン化

一時変数が簡単な式で初期化され、その後に代入されることがない場合は「一時変数のインライン化」を検討します。
 
以下にピクチャーボックスの中央に画像を表示するサンプルを示します。
 
    // ビットマップを中央に描画
    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;
    }
 
コードはすっきりしましたが、まだ分かりづらいですね。次回は「説明用変数の導入」を試してみましょう。

g h T
 1,797 Total Views

ADVERTISING

駅チカ!ホテル検索
全国の駅や目的地近くの宿泊施設を検索し予約することができます。最寄駅沿線からもホテルを検索できるので、アクセスのよいホテルを予約することが可能です。
  1. コメントはまだありません。

  1. トラックバックはまだありません。