【C#】デフォルト引数にnullを設定する方法(引数の省略)

デフォルト引数とは

デフォルト引数とは、メソッドの引数を省略した場合に「規定値」を指定できる引数のことです

オーバーロードと関連した機能の1つで引数が指定されなかったときに使う値を持たせることができます。

オーバーロードに関しては以下の記事を参考ください。

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

2021.06.09

 

デフォルト引数を使用したサンプルコード

以下のサンプルコードを用意しました。

using System;

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

    }

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

            sample.GetNumber(1);
            
        }
    }
}

実行結果:

1

上記のコードに対してデフォルト引数を使用していきます。

using System;

namespace c_default_argument
{
    class Sample
    {

        internal void GetNumber(int a, int b = 0) // デフォルト引数でbに0を規定値に設定
        {
            Console.WriteLine(a + b);
        }

    }

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

            sample.GetNumber(1); // デフォルト引数を設定しているため、引数が1つでもOK
        }
    }
}

実行結果:

1

上記のように、デフォルト引数を設定することで、引数が1つ(sample.GetNumber(1))の場合でもエラーが発生することはありません。

 

デフォルト引数にnullを設定する方法

以下のサンプルコードを用意しました。

using System;

namespace c_default_argument
{
    class Sample
    {

        internal void GetName(string lastName, string firstName)
        {
            Console.WriteLine(lastName + firstName);
        }

    }

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

            sample.GetName("江戸川", "コナン");

        }
    }
}

実行結果:

江戸川コナン

上記のコードに対して、デフォルト引数で「null」を設定していきます。

using System;

namespace c_default_argument
{
    class Sample
    {

        internal void GetName(string lastName, string firstName = null) // デフォルト引数で「null」を設定する
        {
            Console.WriteLine(lastName + firstName);
        }

    }

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

            sample.GetName("江戸川");

        }
    }
}

実行結果:

江戸川

上記のように、デフォルト引数を設定しておくことで、呼び出し側の引数が1つの場合でもエラーが発生することはありません。

 

デフォルト引数の使いどころ

デフォルト引数は、オーバーロードで新たに引数を追加する際などに役立ちます。

以下のように、オーバーロードで呼び出し側の引数が異なる場合に有効です。

using System;

namespace c_default_argument
{
    class Sample
    {

        internal void GetName(string lastName, string firstName = null)
        {
            Console.WriteLine(lastName + firstName);
        }

    }

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

            sample.GetName("江戸川");

            sample.GetName("江戸川", "コナン");

        }
    }
}

実行結果:

江戸川
江戸川コナン

呼び出し側で引数が足りない場合でもエラーが発生することはありません。

ぜひ、活用してみてください。

 

C#のおすすめ書籍・Udemy

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

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

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

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

独習C 新版

Effective C 6.0/7.0

 

■【Udemy】C#のおすすめ講座3選

【Udemy】C#のおすすめ講座3選を現役エンジニアが紹介

2021.06.16