
C# 函数式编程
C#,函数式编程
singhwong
C#,UWP,.Net
展开
-
模式匹配
从面向对象的观点来看,最好总是使用具体的类型和接口来解决问题。然而,通常这并不容易做到。在数据库中,查询可能会给出与任何层次结构都无关的不同对象类型。访问API服务时,可以返回一个列表或对象,或者可能什么也不返回。因此,方法通常应该与不同的类型一起工作。这就是模式匹配可以提供帮助的地方。 例如,下面创建了一个不同对象的数组。在这个名为data的数组中,第一个元素是null,其后是值为42的整数、...原创 2020-01-08 02:04:36 · 1611 阅读 · 0 评论 -
元组
元组能够组合不同类型的对象。使用数组可以组合相同类型的对象,而元组允许使用类型的不同组合。元组有助于减少以下两个需求: 定义自定义类或结构,以返回多个值 定义参数,从方法中返回多个值 自从.NET Framework 4.0版本以来,元组就以泛型Tuple类的形式存在。然而,它们并没有得到广泛使用,因为元组的不同对象可以通过Item1、Item2、Item3等属性访问,这既不吸引人,也没有提...原创 2020-01-07 23:59:54 · 1533 阅读 · 0 评论 -
本地函数
C# 7的一个新特性是本地函数:方法可以在方法中声明。本地函数在方法的作用域、属性访问器、构造函数或者lambda表达式内声明。本地函数只能在包含成员的作用域内调用。可以使用本地函数,而不是使用仅一个地方需要的私有方法。 下面是一个示例,且在没有本地函数的情况下启动——lambda表达式将在下一个回合中由本地函数替换。下面的代码片段声明了分配给委托变量add的lambda表达式。变量add是在方...原创 2020-01-04 16:15:12 · 1026 阅读 · 0 评论 -
using static 声明
许多实际的扩展可以通过扩展方法来实现,比如前面的Use扩展方法或前面介绍的用于LINQ的许多扩展方法。在本书后面的许多章节中还将介绍.NET提供的许多扩展方法。 并非所有实际的扩展都有可以扩展的类型。对于某些场景,简单的静态方法比较适合。为了更容易调用这些方法,可以使用using static声明除去类名。 例如,如果打开了System.Console using static Syst...原创 2020-01-02 16:38:03 · 351 阅读 · 0 评论 -
扩展方法
扩展方法之前已经讨论过了,但是,由于扩展方法对函数式编程概念有很大的帮助,因此这里展示另一个例子。 在函数式编程中,许多方法都非常短,只包含单个语句,而前面所示的表达式体成员有助于减少代码行数。例如,可以将using语句改为方法。下面的扩展方法名为Use,它是所有实现IDisposable接口的类的扩展方法。using语句在实现中使用,以在使用后释放该项。对于该项的用户,可以将Action<...原创 2020-01-01 19:35:00 · 140 阅读 · 0 评论 -
表达式体的成员
C# 6允许表达式体成员的方法和属性只定义get访问器,而在C# 7中,只要在实现代码中只使用一条语句,表达式体成员就可以在任何地方使用。在函数式编程中,许多方法都只是一行代码,因此可以经常使用这个特性,代码行数减少,是因为不需要花括号。 看看下面的代码片段,其中,表达式体成员与属性访问器(get和set)一起使用,并使用ToString()方法的实现,以及构造函数的实现。构造函数定义为接受na...原创 2020-01-01 18:32:50 · 418 阅读 · 0 评论 -
概述
C#从来都不是纯面向对象的编程语言。从一开始,C#就是面向组件的编程语言。面向组件是什么意思?C#提供了面向对象编程语言也在使用的继承和多态性;此外,它还通过特性提供对属性、事件和注释的本机支持。随后带有LINQ和表达式的版本也包括了声明性编程。使用声明式LINQ表达式,编译器会保存一个表达式树,该表达式树稍后由提供程序用于动态生成SQL语句。 C#并不仅仅是单一的编程语言范例。相反,目前使用C...原创 2020-01-01 01:49:13 · 252 阅读 · 0 评论