私有方法参数

时间:2012-09-24 11:00:57

标签: c#

我有一个带有可选参数的方法。

public static Test(String connection, Int32 retryInfiniteLoopGuard = 0)

有没有办法以某种方式将retryInfiniteLoopGuard标记为private,以便在从类外部调用方法时它将变为不可见?

如果你想知道为什么,retryInfiniteLoopGuard用于递归执行,并且不应该对用户可见......

今天我使用重载,但还有其他方法吗?

3 个答案:

答案 0 :(得分:16)

使用该参数创建方法的私有重载,并从公共verson中删除参数。比使公共版本使用默认值调用私有版本:

private static int Test(string connection, int retryInfiniteLoopGuard)
{
    // The code
}

public static int Test(String connection)
{
    return Test(connection, 0);
}

没有其他方法可以实现这一目标。

答案 1 :(得分:2)

在新的C#6中,您可以执行以下操作:

public static int Test(String connection, private Int32 retryInfintiteLoopGuard = 0)
{
    /* Enter Code Here */
}

编译为:

private static int test(String connection, Int32 retryInfiniteLoopGuard)
{
    /* Enter Code Here */
}
public static int Test(String connection)
{
   return test(connection, 0);
}

这种方法的工作方式是所有参数都隐含在方法中,除非当然另有明确说明。 支持的访问者是:

public
internal
protected
private

答案 2 :(得分:1)

不知道你为什么需要它,但你可以创建两个这样的方法

public static Test(String connection, Int32 retryInfiniteLoopGuard)
{
    //method body
}

public static Test(String connection)
{
     Test(connection, 0);
}