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

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

 2010-09-30 21:05:29 来源:WEB开发网   
核心提示: 图片看不清楚?请点击这里查看原图(大图),看高亮部分,稍加改进的Switch/Case扩展方法(2),这个位置的参数只是用来对判断依据进行调整,我觉得完全没有必要,第二个参数是目前的返回结果,并要求该表达式返回经过处理后的结果,写成password.Length.Switch(…&

图片看不清楚?请点击这里查看原图(大图)。

看高亮部分,这个位置的参数只是用来对判断依据进行调整,我觉得完全没有必要,写成password.Length.Switch(……)就行了呀,所以我没有依照此重载方式实现。

以我的实现方式书写的等效代码为:

private static Color GetBackColor2(string password)
{
    var r = password.Length.Switch()
        .CaseReturn(f => f <= 4, 255)
        .CaseReturn(f => f <= 6, 192)
        .CaseReturn(7, 128)
        .CaseReturn(8, 64)
        .DefaultReturn(0)
        .ReturnValue;
    return Color.FromArgb(255, 255 - r, 255 - r);
}

虽然不传入操作结果处理表达式就能安享编译器的自动推导功能,但是有时操作结果表达式还是十分有用的,比如原文中的这个范例:

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

这里首先让所有筛选过程都禁用了break,然后通过传入的表达式将依次返回的结果相累加。

对于这种应用来说,就必须传入自定义的表达式来对结果进行处理了,也就必须要显式声明类型了,我对此的实现也与之相仿,但是我要求传入的表达式具有两个参数,第一个参数是新获得的返回结果,第二个参数是目前的返回结果,并要求该表达式返回经过处理后的结果,以代入下一次处理或用作最终结果,等效代码为:

上一页  1 2 3 4 5  下一页

Tags:稍加 改进 Switch

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