WEB开发网
开发学院软件开发C语言 稍加改进的Switch/Case扩展方法 阅读

稍加改进的Switch/Case扩展方法

 2010-09-30 21:05:29 来源:WEB开发网   
核心提示: privatestaticintGetReward(intcount){returncount.Switch((intn,into)=>n+o).CaseReturn(f=>f>5,1,false).CaseReturn(f=>f>10,10,false).Case

private static int GetReward(int count)
{
    return count.Switch((int n, int o) => n + o)
        .CaseReturn(f => f > 5, 1, false)
        .CaseReturn(f => f > 10, 10, false)
        .CaseReturn(f => f > 20, 100, false)
        .CaseReturn(f => f > 50, 1000, false)
        .CaseReturn(f => f > 100, 1000)
        .ReturnValue;
}

有人可能奇怪,为什么方法名都是CaseReturn、DefaultReturn这样的带个Return呢?这不是很啰嗦嘛?直接以Case命名不好吗?

这是因为我还实现了另一种形式:无返回值形式

参看下面的代码:

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if (IsBusy)
        MessageBox.Show(@"下载正在进行中,是否要关闭此窗口并中止下载?
是 - 关闭窗口并中止下载
否 - 仅关闭窗口,不中止下载
取消 - 不进行任何操作", "提示"
     , MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question).Switch()
     .CaseRun(DialogResult.Yes, f => this.Stop())
     .CaseRun(DialogResult.No, f => { })
     .DefaultRun(f => e.Cancel = true);
}

这段代码通过CaseRun、DefaultRun方法执行传入的表达式,其功能就是根据不同对话框选项进行不同的处理,很容易理解。

上一页  1 2 3 4 5  下一页

Tags:稍加 改进 Switch

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接