在C# 6中实践模式匹配
2015-04-05 23:13
246 查看
模式匹配(Pattern Matching)是F#中非常好用的一种语言特性。估计很多人都希望在C#中能用到这样的特性。 一句话解释一下模式匹配就是:创建一个函数可以接受和处理不同类型的表达式(包括不同参数及类型)。比如你写了一个名为format的函数,可以处理表达式“x∗(1+2)”中的变量、常量、加法和乘法。 Tomas Petricek在他的博文《Pattern matching in action using C# 6》中先抱怨了一下C#在这方面特性的不足,接着还推测了一下C# 6虽然提供了模式匹配的能力,但是微软要藏着捏着不给大家用。 当然,他除了抱怨外,也给大家介绍了在C#和C#中实现模型匹配的方法。 由于C#是类型化的编程语言,无法编写可区分联合类型(discriminated union type)。有趣的是F#其实是把异常看作一种可区分联合类型的,反过来我们也可以用C#的异常来实现模型匹配,即:把表达式作为Exception类型的参数,然后throw这个表达式,然后利用catch来匹配表达式。 基于这种思想,C#就可以实现类似模式匹配的功能来对这个数学表达式“x∗(1+2)”进行计算。 如果利用C#的异常过滤器(exception filters)新特性,更容易实现通过模式匹配来对数学表达式进行计算。(Tomas说微软藏着捏着就是指异常过滤器其实就是一种模式匹配) 原文地址:http://tomasp.net/blog/2015/csharp-pattern-matching/index.html
相关文章推荐
- c# 正则表代式的分组和匹配模式
- 适合C# Actor的消息执行方式(1):Erlang中的模式匹配
- C# 7.0 新特性3: 模式匹配
- 从 “x is null 和 x == null” 的区别看 C# 7 模式匹配中常量和 null 的匹配
- 数据结构上机实践第八周项目5 - 计数的模式匹配
- C#中关于模式匹配的简单例子
- 第八周实践项目5--计数的模式匹配
- 数据结构实践——计数的模式匹配 .
- C# 7编程模式与实践
- 强烈推荐敏捷软件开发:原则、模式与实践(C#版 英文注释版)
- C# 6与VB 12即将加入模式匹配
- C# 6.0可能会支持模式匹配了
- C#中正则表达式的3种匹配模式
- 第八周上机实践项目5 - 计数的模式匹配
- 敏捷软件开发原则,模式与实践(c#)读书笔记(1)-重构
- 组件模式代码实践(C#版本)
- 敏捷软件开发:原则、模式与实践——第13章 写给C#程序员的UML概述
- 用C# 7.0的switch...case模式匹配取代一堆if语句
- 第八周上机实践—项目5—计数的模式匹配
- 适合C# Actor的消息执行方式(1):Erlang中的模式匹配