是否有C#方法的重载参数排序约定?

时间:2013-02-12 20:29:25

标签: c# coding-style conventions overloading

对于以下情况,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){}

是否存在一个约定,说明参数的顺序是否在重载方法中很重要?注意第三种方法不是一个明显的逻辑进展(a,b,c)。

2 个答案:

答案 0 :(得分:19)

是的。看看https://msdn.microsoft.com/en-us/library/ms229029(v=vs.110).aspx

  

在重载成员的参数排序中保持一致。具有相同名称的参数应出现在所有重载中的相同位置。

答案 1 :(得分:1)

虽然不需要维护特定的顺序,但为了便于阅读,通常这样做是个好主意。然而,参数的顺序对于方法签名很重要。例如,

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

}

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

}

是有效的,并且编译得很好,即使参数的数量,甚至它们的名称是相同的。

更新:我不建议这样做。这可能会导致混乱。我只是说它在技术上是有效的。