error CS1739: Наиболее подходящий перегруженный метод для "WriteLine"

Почему не работает код?

using static System.Console;

...

WriteLine(
            format:"{0} {1} {2} {3}",
            arg0: "Type",
            arg1: "Bytes",
            arg2: "Min",
            arg3: "Max"
        );

выдает ошибку:

error CS1739: Наиболее подходящий перегруженный метод для "WriteLine" не имеет параметр с именем "arg3".

Ответы (1 шт):

Автор решения: Exploding Kitten

Потому что не существует перегрузки метода, которая явно принимает 5 параметров Console.WriteLine. При использовании именованных параметров C# будет считать каждый параметр отдельно (искать по имени) и не будет пытаться использовать params.

Если вы хотите использовать перегрузку с params, то указывать arg0 и т.д. не нужно:

WriteLine(
   format:"{0} {1} {2} {3}",
   "Type",
   "Bytes",
   "Min",
   "Max"
);

Или просто использовать интерполяцию строк (предположим, что у вас строки не захардкожены, а являются некими параметрами arg0 и т.д.):

WriteLine($"{arg0} {arg1} {arg2} {arg3}");

При использовании именованных параметром, можно указать C# использовать перегрузку с params, но тогда нужно будет явно создавать массив и мне кажется такой синтаксис ничем не лучше интерполяции:

WriteLine(
   format:"{0} {1} {2} {3}",
   arg: new[] { "Type", "Bytes", "Min", "Max" }
);
→ Ссылка