MessageBox.Show は1種類ではない

― オーバーロードを実例で理解する ―

WinFormsでエラーメッセージを表示するとき、まず学ぶのがこれです。

MessageBox.Show("税抜価格を正しく入力してください");

とてもシンプルです。

ですが実は、これは MessageBox.Show の1つの形 にすぎません。


■ オーバーロードとは?

オーバーロードとは、

同じメソッド名で、引数の違うメソッドが複数存在すること

でしたね。

つまり、

Show(文字列)
Show(文字列, 文字列)
Show(文字列, 文字列, ボタン種類, アイコン種類)

のように、複数の「Show」が存在しているのです。


■ 例① タイトルを追加する

MessageBox.Show(
    "税抜価格を正しく入力してください",
    "入力エラー");

2つ目の引数は「タイトル」です。

表示がより分かりやすくなります。


■ 例② ボタンやアイコンを指定する

MessageBox.Show(
    "税抜価格を正しく入力してください",
    "入力エラー",
    MessageBoxButtons.OK,
    MessageBoxIcon.Warning);

ここで使われているのは enum型 です。

  • MessageBoxButtons.OK
  • MessageBoxIcon.Warning

このように、あらかじめ用意された選択肢から指定できます。


■ なぜ複数の形があるのか?

理由はシンプルです。

必要な機能のレベルが人によって違うから

  • 簡単に表示したい人 → 1引数版
  • タイトルも付けたい → 2引数版
  • UIをきちんと作りたい → 4引数版

同じ名前で、用途に応じて使い分けられる。

これがオーバーロードの便利さです。


■ IntelliSenseで確認してみよう

MessageBox.Show( と入力してみてください。

Visual Studioには複数の候補が表示されるはずです。

これは、

.NETが最初からたくさんの「Show」を用意している

ということです。


■ 学習ポイント

今回の例で大事なのは:

  • オーバーロードは特別な機能ではない
  • .NETの標準APIでも普通に使われている
  • 既に学んだ知識が実務でも使われている

という点です。


■ まとめ

MessageBox.Show("税抜価格を正しく入力してください");

これは完成形ではありません。

これは 数あるShowのうちの1つ です。

オーバーロードを理解すると、

「メソッドは1つとは限らない」

という視点が身につきます。

これがAPIを読む力につながります。


次にコードを書くとき、

「他の書き方はないか?」

と一度 IntelliSense を見てみましょう。

それが一段上のプログラミングです。

訪問数 17 回, 今日の訪問数 17回