如何为只有可选参数的函数定义多个重载?

时间:2017-11-08 10:52:27

标签: c# visual-studio

我有这个带有重载和可选参数的函数:

protected void signIn() {
    if (checkPlayServices()) {
        ...
    }
}

private boolean checkPlayServices() {
    GoogleApiAvailability googleAPI = GoogleApiAvailability.getInstance();
    int result = googleAPI.isGooglePlayServicesAvailable(this);
    if (result != ConnectionResult.SUCCESS) {
        if (googleAPI.isUserResolvableError(result)) {
            googleAPI.getErrorDialog(this, result, PLAY_SERVICES_RESOLUTION_REQUEST).show();
        }
        else {
            Toast.makeText(this, R.string.message_unsupported_device, Toast.LENGTH_LONG).show();
        }
        return false;
    }
    return true;
}

当没有params传递给它们时,这些函数做同样的工作(调用fn()),但由于这个错误,我无法调用此函数而没有传递给它的参数:

  

以下方法或属性之间的调用不明确......

1 个答案:

答案 0 :(得分:2)

您只需要使用空参数创建方法:

public void fn(int a)
{

}
public void fn(string a)
{

}

public void fn()
{
    //Your code goes here
}

只有当你没有将任何参数传递给fn()时才会发生这个错误,很明显,因为编译器不会知道在那一点上要调用什么。所以你的可选参数毫无意义。