c#扩展方法奇思妙用变态篇二:封装 if/else、swith/case及while
2010-09-30 20:46:12 来源:WEB开发网我们把这种方式用扩展方法来完成:
public static TOutput Switch<TOutput, TInput>(this TInput input, IEnumerable<TInput> inputSource, IEnumerable<TOutput> outputSource, TOutput defaultOutput)
{
IEnumerator<TInput> inputIterator = inputSource.GetEnumerator();
IEnumerator<TOutput> outputIterator = outputSource.GetEnumerator();
TOutput result = defaultOutput;
while (inputIterator.MoveNext())
{
if (outputIterator.MoveNext())
{
if (input.Equals(inputIterator.Current))
{
result = outputIterator.Current;
break;
}
}
else break;
}
return result;
}
下面的Test5是调用:
public static void Test5()
{
string englishName = "apple";
string chineseName = englishName.Switch(
new string[] { "apple", "orange", "banana", "pear" },
new string[] { "苹果", "桔子", "香蕉", "梨" },
"未知"
);
Console.WriteLine(chineseName);
}
- ››扩展Axis2框架,支持基于JVM的脚本语言
- ››扩展WebSphere Portal V6个性化功能
- ››扩展JavaScript的时候,千万要保留其原来的所有功...
- ››扩展数据:如何为 Model 750 服务器选择 I/O 扩展...
- ››扩展 JDT 实现自动代码注释与格式化
- ››扩展 secldap 的功能以验证多个数据源
- ››扩展 JUnit4 以促进测试驱动开发
- ››扩展 JUnit 测试并行程序
- ››扩展的ToolStripEx控件
- ››扩展 Eclipse 的 Java 开发工具
- ››扩展 Eclipse 辅助和规范开发流程
- ››扩展方法 DataTable 和List 相互转换