Есть ли соглашение о закачке параметров перегрузки параметров С#?

Есть ли какое-либо соглашение в С# (или любой объектно-ориентированный язык, поддерживающий перегрузку метода) для следующей ситуации?

Допустим, у меня есть метод foo:

public void Foo(int a){//does stuff}

Но на самом деле у меня есть 3 метода foo:

public void Foo(int a){}
public void Foo(int a, double b){}
public void Foo(float c, int a, double b){}

Существует ли соглашение, в котором указано, имеет ли значение порядок параметров в перегруженном методе? Обратите внимание, что третий метод не является очевидной логической прогрессией (a, b, c).

Ответ 1

Да, есть. Посмотрите https://msdn.microsoft.com/en-us/library/ms229029(v=vs.110).aspx

Будьте последовательны в упорядочении параметров в перегруженных элементах. Параметры с одинаковым именем должны отображаться в одной позиции во всех перегрузках.

Ответ 2

Несмотря на то, что для поддержания определенного порядка не требуется, как правило, это хорошая идея сделать это ради удобочитаемости. Однако порядок параметров имеет значение для сигнатуры метода. Например,

public void DoStuff(int a, bool b, string c)
{

}

public void DoStuff(bool b, string c, int a)
{

}

действителен и компилируется просто отлично, хотя количество параметров и даже их имена одинаковы.

Обновление: я бы не рекомендовал делать это таким образом. Это может привести к путанице. Я просто заявлял, что это технически обоснованно.