我有一个带有可选参数的方法。
public static Test(String connection, Int32 retryInfiniteLoopGuard = 0)
有没有办法以某种方式将retryInfiniteLoopGuard
标记为private
,以便在从类外部调用方法时它将变为不可见?
如果你想知道为什么,retryInfiniteLoopGuard
用于递归执行,并且不应该对用户可见......
今天我使用重载,但还有其他方法吗?
答案 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);
}