C#

名前付き引数を持つメソッドと引数が無いメソッドが同時に存在するとき

More than 5 years have passed since last update.

名前付き引数を持つメソッドと引数が無いメソッドが同時に存在し、引数を指定せずにそのメソッドを呼び出した場合の動作は、名前付き引数と省略可能な引数 (C# プログラミング ガイド)によると、以下の通りとなります。

2 つの候補が同等である場合は、呼び出しで引数が省略された省略可能なパラメーターを持たない候補が優先されます。

例えば、以下のコードですと、Mainメソッド内で呼び出したfunc()static void func()が呼び出されることになります。

class cls { };

class Program
{
    static void Main(string[] args)
    {
        func( );
    }

    static void func()
    {
    }

    static void func(cls c = null)
    {
    }
}