【发布时间】:2009-09-25 20:15:42
【问题描述】:
我今天在 C# 中遇到了一些我以前没有想到的东西。我的班级有两种方法,一种是另一种的重载。它们是这样声明的:
public void RequirePermissions(params string[] permissions)...public void RequirePermissions(string message, params string[] permissions)...
在我的代码中,我尝试这样调用第一个:
RequirePermissions("Permission1", "Permission2");
...期待它调用第一个重载。好吧,它称为第二次重载。在这种情况下,我可以让它调用第一个方法的唯一方法是手动传递一个 string[] 对象,如下所示:
RequirePermissions(new string[] { "Permission1", "Permission2" });
现在,这种行为不会让我感到困惑,因为我知道编译器无法根据我提供的参数来判断我实际想要调用的方法。但是如果我不小心,这可能在我的代码中被忽视了。似乎微软应该让编译器在遇到上述情况时抛出错误。有人对此有任何想法吗?除了我发布的“解决方案”之外,还有其他方法可以调用第一个重载吗?
【问题讨论】:
-
你的建议让我有点困惑。您认为警告应该出现在模棱两可的 call 上,还是出现在可能导致模棱两可的调用的一组 declarations 上?
标签: c# parameters overloading