【C#】オーバーロードの使いどころとは?

オーバーロードとは

オーバーロードとは、引数の型もしくは、引数の数が異なる同じ名前のメソッド・コンストラクタを同一クラス内で定義することをいいます

 

メソッドのオーバーロード

using System;

namespace c_overload
{
    class Sample
    {
        internal void GetNumber(int a) // int型で引数が1つのメソッド
        {
            Console.WriteLine(a);
        }

        internal void GetNumber(int a, int b) // int型で引数が2つのメソッド
        {
            Console.WriteLine(a + b);
        }

        internal void GetNumber(string c) // string型で引数が1つのメソッド
        {
            Console.WriteLine(c);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Sample sample = new Sample();

            sample.GetNumber(1);
            sample.GetNumber(1, 2);
            sample.GetNumber("100");
        }
    }
}

実行結果:

1
3
100

上記のように、同一クラス内に引数の型もしくは引数の数が異なる同じ名前のメソッドを定義することができます

 

コンストラクタのオーバーロード

using System;

namespace c_overload
{
    class Sample
    {
        public Sample(int a) // int型で引数が1つのコンストラクタ
        {
            Console.WriteLine(a);
        }

        public Sample(int a, int b) // int型で引数が2つのコンストラクタ
        {
            Console.WriteLine(a + b);
        }

        public Sample(string c) // string型で引数が1つのコンストラクタ
        {
            Console.WriteLine(c);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Sample sample1 = new Sample(1);

            Sample sample2 = new Sample(1, 2);

            Sample sample3 = new Sample("100");
           
        }
    }
}

実行結果:

1
3
100

上記のように、同一クラス内に引数の型もしくは引数の数が異なる同じ名前のコンストラクタを定義することができます

 

オーバーロードの使いどころ

オーバーロードの使いどころとしては、既存コードへの影響を少なくしたい場合に用いられることが多いです

例えば、既存システムの改修・機能追加をするとします。

既存のメソッドに引数を新たに追加したい場合、引数の数が異なる同じ名前のメソッドを定義することで既存コードへの影響を最小限にすることができます

オーバーロードは便利な機能ではあるものの、後の改修・機能追加などを考慮して使用することが望ましいと思います。

 

おすすめ書籍・Udemy

■C#を学習し始めた方向け
やさしいC 第3版 (「やさしい」シリーズ)

1週間でCの基礎が学べる本

確かな力が身につくC「超」入門 第2版 (Informatics&IDEA)

■C#をある程度学習した方向け
基礎からしっかり学ぶCの教科書 改訂新版 (マイクロソフト関連書)

独習C 新版

Effective C 6.0/7.0

 

■Udemyのおすすめ講座①
C#初心者が最初に身に着けるべき30の文法

■Udemyのおすすめ講座②
初心者でも最速でシゴトに使えるC#!