编码风格-是否有C#方法重载参数排序约定

本文关键字:重载 参数 排序 约定 方法 风格 是否 编码 | 更新日期: 2023-09-27 17:58:47

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

编码风格-是否有C#方法重载参数排序约定

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

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

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

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

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

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