スポンサーリンク
※サイト運営にサーバーは必須です※
 ~このサイトもエックスサーバー
を使用しています~
   
![]()
目次
オーバーロードとは?
オーバーロードとは、「戻り値や引数は異なるが、名前は同じメソッドを複数定義する」ことを意味します。
※オーバーロードを日本語に訳すとするなら「多重定義」です
オーバーロードの簡単な例
ConsoleクラスのWriteLineメソッドは、オーバーロードされています。

※上のようなコードを見たい場合は、まず、Visual Studio上で、Console.WriteLineと書いてカーソルをあてます。そのまま「F12」を押すと定義に移動します。
ソースコード
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18  | 
						using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace OverLoad02 {     class Program     {         static void Main(string[] args)         {             Console.WriteLine("test");//WriteLine(string value);             Console.WriteLine(12);//WriteLine(int value);             Console.WriteLine(3.45);//WriteLine(double value);         }     } }  | 
					
実行結果
test
 12
 3.45
WriteLineメソッドの引数がstring型だった場合、
WriteLine(string value);
が使用されます。
一方で、引数がint型だった場合、
WriteLine(int value);
が使用されます。
もしもオーバーロードがなかったら?
もしもオーバーロードがなかったら、引数だけが異なり内容が同じメソッドに対して、それぞれ別の名称を割り振る必要が出てきます。
例えば、string型をコンソールに出力するメソッドにWriteLineという名称を割り振ったとします。
その後、int型をコンソールに出力するメソッドとして作りたくなったとします。
この時、オーバーロードがなければ、WriteLine01などの異なる名前を付けないといけません。
されにその後、double型のメソッドとして作りたくなったら、新たにWriteLine02といったような異なるメソッド名を用意しないといけません。
こうなると、機能は同じなのに、異なる名前で管理されて、非常に不便になります。
オーバーロードの使い方
オーバーロードをより使いこなすにあたって、以下の2点を押さえてください。
・引数の組み合わせが同じであるが、戻り値が異なる場合、オーバーロードはできない
  ・引数の型の順番が異なる場合、オーバーロードできる
ソースコード
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33  | 
						using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace OverLoad03 {     class Program     {         static void Main(string[] args)         {             Personal(25, "トニー");             Personal("ボブ", 17);         }         static void Personal(int age, string name)         {             Console.WriteLine($"年齢:{age} 名前:{name}");         }         static void Personal(string name, int age)         {             Console.WriteLine($"名前:{name} 年齢:{age}");         }         //戻り値だけが異なるメソッドはオーバーロードできない         //static string Personal(string name, int age)         //{         //    return $"名前:{name} 年齢:{age}";         //}     } }  | 
					
実行結果
年齢:25 名前:トニー
 名前:ボブ 年齢:17
関連記事
~Webサイトを自分で作ってみませんか?~
Webサイトを運営するにはサーバーが必須です。
 このサイトは、エックスサーバー 
のサーバーを使用しています。
 エックスサーバーは無料で10日間お試しができます。
