Предположим, я должен использовать все параметры (а именно in, out, named, params, optional) в методе. Какой порядок может быть наилучшим, чтобы мы могли легко передавать аргументы этой функции?
public static void test(out int num,in int num2,string last,String
first = "ABCD",params int [] l)
{
//TODO LINES
}





Мне нравится этот порядок (изменить только OUT <=> IN)
public static void test(in int num2, out int num, string last, string first = "ABCD", params int[] l)
{
//TODO LINES
}
Первый в (только чтение) позже Необходимые, значения по умолчанию,
Нет определенного порядка для параметров (в последнюю очередь нужны только массивы параметров). Как старший разработчик, мы следуем следующей последовательности:
А что, если мы захотим использовать именованные переменные?
Именованные переменные дают вам свободу передавать параметр в любом порядке, но при создании метода мы следуем указанному мною порядку. Вы не можете быть уверены, что человек, вызывающий ваш метод, будет использовать именованные переменные или нет, поэтому рекомендуется использовать определенный порядок.
Аргументы, передаваемые методу, всегда оцениваются слева направо.
Из спецификации языка C# 4.0:
7.5.1.2 Run-time evaluation of argument lists
During the run-time processing of a function member invocation (§7.5.4), the expressions or variable references of an argument list are evaluated in order, from left to right, [...]
Но лучше следовать нижеприведенному:
Воронка выбора
Семантика
Важность / актуальность
Частота использования
Проблемы ввода / вывода
Вы можете получить подробное объяснение из Ответ обмена стеком
В конце должен быть указан аргумент
Params.