我今天刚遇到C#的东西,我以前没想过.我班上有两种方法,一种是另一种方法的重载.它们被声明如下:
public void RequirePermissions(params string[] permissions)...
Run Code Online (Sandbox Code Playgroud)public void RequirePermissions(string message, params string[] permissions)...
Run Code Online (Sandbox Code Playgroud)在我的代码中,我试着像这样调用第一个:
RequirePermissions("Permission1", "Permission2");
Run Code Online (Sandbox Code Playgroud)
...期待它调用第一个重载.好吧,它称为第二次超载.在这种情况下,我可以让它调用第一个方法的唯一方法是手动传递一个string[]对象,如下所示:
RequirePermissions(new string[] { "Permission1", "Permission2" });
Run Code Online (Sandbox Code Playgroud)
现在,这种行为并不会让我感到困惑,因为我知道编译器无法根据我提供的参数告诉我实际想要调用哪种方法.但我不小心这可能在我的代码中被忽视了.似乎微软应该在遇到上述情况时让编译器抛出错误.有没有人对此有任何想法?除了我发布的"解决方案"之外,还有另一种方法可以调用第一个过载吗?