我有这个带有可选参数的方法。
public static Test(String connection, Int32 retryInfiniteLoopGuard = 0)
有没有办法以某种方式将其标记retryInfiniteLoopGuard
为,private
以便在从类外部调用该方法时它变得不可见?
如果您想知道为什么,retryInfiniteLoopGuard
是用于递归执行并且不应该对用户可见......
今天我使用重载,但是还有其他方法吗?
我有这个带有可选参数的方法。
public static Test(String connection, Int32 retryInfiniteLoopGuard = 0)
有没有办法以某种方式将其标记retryInfiniteLoopGuard
为,private
以便在从类外部调用该方法时它变得不可见?
如果您想知道为什么,retryInfiniteLoopGuard
是用于递归执行并且不应该对用户可见......
今天我使用重载,但是还有其他方法吗?
使用该参数创建方法的私有重载,并从公共版本中删除该参数。比使用默认值使公共版本调用私有版本:
private static int Test(string connection, int retryInfiniteLoopGuard)
{
// The code
}
public static int Test(String connection)
{
return Test(connection, 0);
}
没有其他方法可以实现这一目标。
在新的 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
不知道你为什么需要它,但你可以创建两个这样的方法
public static Test(String connection, Int32 retryInfiniteLoopGuard)
{
//method body
}
public static Test(String connection)
{
Test(connection, 0);
}