14

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

4

2 回答 2

21

就在这里。看看https://msdn.microsoft.com/en-us/library/ms229029(v=vs.110).aspx

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

于 2013-02-12T20:32:09.180 回答
2

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

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

}

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

}

是有效的并且编译得很好,即使参数的数量,甚至它们的名字都是一样的。

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

于 2013-02-12T20:37:40.533 回答