PR

[C# プログラミング入門] メソッドのオーバーロード

今回はメソッドのオーバーロードについてです。
“Hello World”をコンソールに表示した時点でオーバーロードされたメソッドを使っています。

スポンサーリンク

オーバーロードについて

簡単に言うと、メソッドが必要とするパラメーター(引数)が違う場合、メソッド名が同じでも定義ができます。

サンプルコードでよく使っている「System.Console.WriteLine」の定義を見てみます。
VisualStudioを使っている場合、Mainメソッド内に「 System.Console.WriteLine 」を書き「WriteLine」のところをクリックしてカーソルを持っていきF12ボタンを押します。

public static void WriteLine(bool value);
public static void WriteLine(char value);
public static void WriteLine(char[] buffer);
public static void WriteLine(char[] buffer, int index, int count);
public static void WriteLine(decimal value);
public static void WriteLine(double value);
public static void WriteLine(float value);
public static void WriteLine(int value);
public static void WriteLine(long value);
public static void WriteLine(object value);
public static void WriteLine(string format, object arg0);
public static void WriteLine(string format, object arg0, object arg1);
public static void WriteLine(string format, object arg0, object arg1, object arg2);
public static void WriteLine(string format, params object[] arg);
public static void WriteLine(string value);
public static void WriteLine(uint value);
public static void WriteLine(ulong value);

めっちゃオーバーロードしていますね。
オーバーロードでいろいろな型のパターンに対応しているので、引数に数値型が指定された場合でも、文字列が指定された場合でも、WriteLineメソッドを呼び出すことができるのです。

「引数が違う場合」というのは引数の型、引数の数が違うということです。
引数の型が同じで名前が違うというメソッドはオーバーロードできません。

class Program
{
    // 下の二つは引数名が違っても、引数の型が同じなのでオーバーロードできない
    static void Method(int a) { }
    static void Method(int b) {  }
}

また、戻り値もそれぞれ違う型を返すことができます。
System.Math.Max」メソッドの定義を見てみます。
このメソッドは2つの数値を受け取り大きい方の数値を返します。

public static byte Max(byte val1, byte val2);
public static decimal Max(decimal val1, decimal val2);
public static double Max(double val1, double val2);
public static float Max(float val1, float val2);
public static int Max(int val1, int val2);
public static long Max(long val1, long val2);
public static sbyte Max(sbyte val1, sbyte val2);
public static short Max(short val1, short val2);
public static uint Max(uint val1, uint val2);
public static ulong Max(ulong val1, ulong val2);
public static ushort Max(ushort val1, ushort val2);

それぞれのオーバーロードで違う型を戻り値として返しています。


C# 記事まとめページに戻る(他のサンプルコードもこちら)

C# プログラミング講座
C#についての記事まとめページです。開発環境VisualStudioのインストール方法や使い方、プログラミングの基礎知識についてや用語説明の記事一覧になっています。講座の記事にはすぐに実行できるようにサンプルコードを載せています。

コメント