c#扩展方法奇思妙用变态篇二:封装 if/else、swith/case及while
2010-09-30 20:46:12 来源:WEB开发网但编译不通过,会提示错误:
这个错误比较怪,我们写了两个扩展,一个是给值类型的,一个给引用类型,可string类型在这里都不行。这个原因我说不清楚了,还留给园子里高手们吧。
不过专门为string写个扩展,这个问题可以化解,如下:
public static string If(this string s, Predicate<string> predicate, Func<string, string> func)
{
return predicate(s) ? func(s) : s;
}
看来扩展方法也是有优先级的:对同一个类进行多次扩展,扩展方法相名,参数也等效(数量、顺序相同),非泛版扩展要比泛型版扩展优先级高。
下面再来看一段swith代码,很啰嗦的!这里是为了引出扩展硬写出来的:
public static void Test4()
{
string englishName = "apple";
string chineseName = string.Empty;
switch (englishName)
{
case "apple":
chineseName = "苹果";
return;
case "orange":
chineseName = "桔子";
return;
case "banana":
chineseName = "香蕉";
return;
case "pear":
chineseName = "梨";
break;
default:
chineseName = "未知";
break;
}
Console.WriteLine(chineseName);
}
- ››扩展Axis2框架,支持基于JVM的脚本语言
- ››扩展WebSphere Portal V6个性化功能
- ››扩展JavaScript的时候,千万要保留其原来的所有功...
- ››扩展数据:如何为 Model 750 服务器选择 I/O 扩展...
- ››扩展 JDT 实现自动代码注释与格式化
- ››扩展 secldap 的功能以验证多个数据源
- ››扩展 JUnit4 以促进测试驱动开发
- ››扩展 JUnit 测试并行程序
- ››扩展的ToolStripEx控件
- ››扩展 Eclipse 的 Java 开发工具
- ››扩展 Eclipse 辅助和规范开发流程
- ››扩展方法 DataTable 和List 相互转换
更多精彩
赞助商链接