我发现了一个让我有点困惑的奇怪情况。我不确定它是否只是违反了标准的最佳做法,但现在就去了。
我有一些带有一些值的枚举。
private enum Pages{
Page1,
Page2,
Page3
}
我希望能够调用一个方法来切换页面,无论传入的页面是否为空,所以我想有一对像这样的方法可以做我想要的:
private void SwitchPage(Pages? page)
{
if (page.HasValue)
SwitchPage(page.Value);
}
private void SwitchPage(Pages page)
{
// Page switch logic
}
这部分编译得很好。当我尝试使用可空的Pages变量实际调用SwitchPage()时,它似乎无法看到带有可为空的Pages参数的重载。
private void LoadDataAndMaybeSwitchPage(Pages? page)
{
// Load data...
// Switch Page
SwitchPage(page);
}
这不编译,并给出这些(相关的)错误:
错误237最佳重载方法匹配' SwitchPage(Pages)'有一些无效的论点
错误238参数1:无法从'页面转换?'到'页面'
它甚至看不到可以为空的枚举的重载,只是标准的枚举。
有关为何发生这种情况的任何想法?我知道每当我想使用SwitchPage(Pages)时,我都可以轻松地使用SwitchPage(Pages?)方法中的逻辑,但我希望稍微简化代码。
谢谢!
答案 0 :(得分:0)
抱歉,当我将代码复制到一个新项目中时,我发现了一个错字。 SwithPage()!= SwitchPage()。