Есть C# метод перегрузки параметр конвенции заказ?

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

допустим у меня есть метод 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){}

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

2 ответов


Да есть. Взгляните на https://msdn.microsoft.com/en-us/library/ms229029 (v=против 110).aspx

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


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

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

}

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

}

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

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