对于以下情况,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)。
答案 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)
{
}
是有效的,并且编译得很好,即使参数的数量,甚至它们的名称是相同的。
更新:我不建议这样做。这可能会导致混乱。我只是说它在技术上是有效的。