上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 25 下一页
摘要: 建议37:使用Lambda表达式代替方法和匿名方法 在建议36中,我们创建了这样一个实例程序: 实际上要完成相同的功能,还有很多种编码方式。先看一种最中规中矩的,也是最繁琐的写法: 注意:上面的语法虽然繁琐,但是我们可以从中加深对委托本质的认识:委托也是一种数据类型,跟任何FCL 中的引用类型没有差 阅读全文
posted @ 2017-12-01 17:49 指间的徘徊 阅读(351) 评论(0) 推荐(0) 编辑
摘要: 建议36:使用FCL中的委托声明 FCL中存在3类这样的委托声明,它们分别是:Action、Func、Predicate。尤其是在它们的泛型版本出来以后,已经能够满足我们在实际编码过程中的大部分需求。 Action表示接受0个或多个输入参数,执行一段代码,没有任何返回值; Func表示接受0个或多个 阅读全文
posted @ 2017-12-01 17:47 指间的徘徊 阅读(387) 评论(0) 推荐(0) 编辑
摘要: 建议35:使用default为泛型类型变量指定初始值 有些算法,比如泛型集合List<T>的Find算法,所查找的对象可能会是值类型,也有可能是引用类型。在这种算法内部,我们常常会为这些值类型或引用类型变量指定默认值。于是,问题来了:值类型变量的默认初始值是0值,而引用类型变量的默认初始值是null 阅读全文
posted @ 2017-12-01 17:31 指间的徘徊 阅读(440) 评论(0) 推荐(1) 编辑
摘要: 建议34:为泛型参数设定约束 “约束”这个词可能会引起歧义,有些人肯能认为对泛型参数设定约束是限制参数的使用,实际情况正好相反。没有“约束”的泛型参数作用很有限,倒是“约束”让泛型参数具有了更多的行为和属性。 查看下面代码,我们会发现参数t1或参数t2仅仅具有object的属性和行为,所以几乎不能再 阅读全文
posted @ 2017-12-01 17:21 指间的徘徊 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 建议33:避免在泛型类型中声明静态成员 在上一建议中,已经理解了应该将MyList<int>和MyList<string>视作两个完全不同的类型,所以,不应该将MyList<T>中的静态成员理解成MyList<int>和MyList<string>共有的成员。 输入: 2 若果换成泛型: 输出为: 阅读全文
posted @ 2017-12-01 17:18 指间的徘徊 阅读(274) 评论(0) 推荐(0) 编辑
摘要: 建议32:总是优先考虑泛型 泛型的优点是多方面的,无论泛型类还是泛型方法都同时具备可重用性、类型安全性和高效率等特性,这是非泛型和非泛型方法无法具备的。 以可重用性为例: 该类型只支持整型,如果要让类型支持字符串,有一种方法是重新设计一个类。但是这两个类型的属性和方法都是非常接近的,如果有一种方法可 阅读全文
posted @ 2017-12-01 16:07 指间的徘徊 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 建议31:在LINQ查询中避免不必要的迭代 无论是SQL查询还是LINQ查询,搜索到结果立刻返回总比搜索完所有的结果再将结果返回的效率要高。 示例代码: 针对上述集合,返回年龄等于20的第一个元素。下面有两个查询模式,我们来考虑哪一个效率更高。 通常我们会认为第一种的效率会更高一些,因为它似乎返回的 阅读全文
posted @ 2017-12-01 16:03 指间的徘徊 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 建议30:使用LINQ取代集合中的比较器和迭代器 LINQ提供了类似于SQL的语法来实现遍历、筛选与投影集合的功能。 foreach实际隐含调用的是集合对象orderByBaseSalary和orderByBouns的迭代器。以往,如果我们要绕开集合的Sort方法对集合按照一定的顺序进行迭代,则需要 阅读全文
posted @ 2017-11-30 17:39 指间的徘徊 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 建议29:区别LINQ查询中的IEnumerable<T>和IQueryable<T> LINQ查询一共提供了两类扩展方法,在System.Linq命名空间下,有两个静态类:Enumerable类,它针对继承了IEnumerable<T>接口的集合进行扩展;Queryable类,它针对继承了IQue 阅读全文
posted @ 2017-11-30 17:38 指间的徘徊 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 建议28:理解延迟求值和主动求值之间的区别 要理解延迟求值(lazy evaluation)和主动求值(eager evaluation),先看个例子: 输出: temp1: 11 6 7 8 9temp2: 6 7 8 9 在延迟求职的情况下,只是定义了一个查询,而不是立刻执行。对查询结果的访问每 阅读全文
posted @ 2017-11-30 17:36 指间的徘徊 阅读(333) 评论(0) 推荐(1) 编辑
上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 25 下一页