首页
新闻
博问
会员
闪存
班级
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
代码改变世界
Cnblogs
Dashboard
Login
Home
Contact
Gallery
Subscribe
RSS
鹤冲天
对月狂饮,惊叹青春过半。顾镜自怜,提眉强作欢颜。
随笔分类 -
c#
使用 Lambda 表达式编写递归五:推导装配脑袋的 Fix
2013-04-11 10:31 by 鹤冲天, 3638 阅读,
收藏
,
编辑
摘要:
装配脑袋 给出的 Fix 函数精简到极致: Func<T, TResult> Fix<T, TResult>(Func<Func<T,TResult>, Func<T,TResult>> f) { return t => f(Fix(f))(t); } 本文通过 λ 演算导出。
阅读全文
7 Comment
分类
c#
标签
lambda
,
c#
,
递归
,
λ演算
,
不动点组合子
使用 Lambda 表达式编写递归四:实现 Θ 组合子
2013-04-10 20:33 by 鹤冲天, 3332 阅读,
收藏
,
编辑
摘要:
上一篇文章已经实现了 Y 组合子。 本文将实现另一个不动点组合子: Θ 组合子。 Θ 组合子也是一个常见不动点组合子,由 阿兰·图灵 发现,也称为图灵不动点组合子: Θ = (λx.λy.(y(x x y))) (λx.λy.(y(x x y)))
阅读全文
4 Comment
分类
c#
标签
lambda
,
c#
,
递归
,
动点组合子
,
Θ组合子
使用 Lambda 表达式编写递归三:实现 Y 组合子
2013-04-10 17:31 by 鹤冲天, 7287 阅读,
收藏
,
编辑
摘要:
也许你我都难以理解,为什么有人对她痴迷疯狂,铭记在心中不说,还要刻在身上。 她让人绞尽脑汁,也琢磨不定!她让人心力憔悴,又百般回味! 她,看似平淡,却深藏玄机!她,貌不惊人,却天下无敌! 她是谁?她就是...
阅读全文
5 Comment
分类
c#
标签
lambda
,
c#
,
递归
,
Y组合子
使用 Lambda 表达式编写递归二:推断 FIX、g 的类型
2013-04-09 20:41 by 鹤冲天, 3251 阅读,
收藏
,
编辑
摘要:
上一章节介绍的 λ 演算是无类型的,对于 FIX、g 我们只知道: 它们都是有独个参数的函数,它们的参数本身也是一个只有单一参数的函数... 基于这种描述,是无法将 FIX、g 转化为 c# 代码的,我们需要推断出 FIX、g 类型。
阅读全文
7 Comment
分类
c#
标签
lambda
,
c#
,
递归
,
λ演算
,
不动点组合子
使用 Lambda 表达式编写递归一:前言及基础
2013-04-09 16:31 by 鹤冲天, 11028 阅读,
收藏
,
编辑
摘要:
这是一个比较古老的话题,三年半之前,老赵就此写过一篇很文章《使用Lambda表达式编写递归函数》。其中提出了伪递归的概念,提出了自己的解决方式,也引出了装配脑袋 使用不动点组合子 的解决办法。 最近比较轻闲,静下心来学习了下λ演算、不动点组合子的一些理论,并深入思考,略有所悟,在此和大家分享下。 本文及后续章节会用到相当复杂的泛型及 lambda 表达式,请做好相关技术和心理准备。
阅读全文
8 Comment
分类
c#
标签
lambda
,
c#
,
递归
,
λ演算
,
不动点组合子
替代反射调用的几种方式及性能测试
2013-03-31 17:25 by 鹤冲天, 8700 阅读,
收藏
,
编辑
摘要: 园子里和这个话题的相关文章比较多,本文是旧话重提,外加个小的总结。主要因为近期看到很多同事、朋友都已经使用 VS2012 进行 .NET 4.5 开发了,却还在大量使用反射,不知道用新的方式。或有所了解,但又害怕性能不好不敢大胆去用。
阅读全文
21 Comment
分类
c#
标签
dynamic
,
反射
,
反射发出
,
DynamicMethod
,
ExpressionTree
c# 扩展方法 奇思妙用 高级篇 九:OrderBy(string propertyName, bool desc)
2012-01-15 18:41 by 鹤冲天, 29494 阅读,
收藏
,
编辑
摘要: 如题,本文实现 OrderBy(string propertyName, bool desc) 扩展方法,以弥补 Linq 原生排序方法的不足
阅读全文
20 Comment
分类
c#
,
扩展方法
标签
扩展方法
,
c#
,
.net
,
奇思妙用
,
orderby
,
排序
Linq:切勿使用 Count() > 0 来判断集合非空
2011-12-11 20:51 by 鹤冲天, 26485 阅读,
收藏
,
编辑
摘要: 如题,使用 Linq 时切勿使用 Count() > 0 来判断集合非空,这样做可能会带来严重的性能问题
阅读全文
22 Comment
分类
c#
标签
Any
,
Linq
,
Count
c# 扩展方法奇思妙用基础篇十:IsEmpty、IsNotEmpty 扩展
2011-12-10 22:45 by 鹤冲天, 8668 阅读,
收藏
,
编辑
摘要: IsEmpty、IsNotEmpty 扩展方法,用来确定序列是否包含元素。
阅读全文
1 Comment
分类
c#
,
扩展方法
标签
扩展方法
,
c#
,
奇思妙用
,
Any
,
IsEmpty
,
IsNotEmpty
四行代码创建复杂(无限级)树
2011-12-09 20:38 by 鹤冲天, 7493 阅读,
收藏
,
编辑
摘要: 最近两三天一直在做树方面的基础工作,碰巧今天在博客园看到一篇关于动态创建树文章,粗略浏览下,感觉有不够强大。相比而言,感觉自己的方式更好些,只需要四行代码就可以创建一颗复杂的无限级树
阅读全文
16 Comment
分类
c#
标签
无限级树
,
TreeBuilder
你能指出这个 ForEach 扩展方法中的错误吗?
2011-10-07 16:06 by 鹤冲天, 4901 阅读,
收藏
,
编辑
摘要: Linq 中没有原生的 ForEach 扩展方法,我们可以很轻松的扩展一个......但这个有返回值的实现中有错误的,你能指出吗?
阅读全文
32 Comment
分类
c#
,
扩展方法
标签
扩展方法
,
c#
,
foreach
,
yield
复用 Entity Framework 中英语单复数形式变换的类
2011-09-21 21:24 by 鹤冲天, 4642 阅读,
收藏
,
编辑
摘要: 数据库表名用复数、实体类名用单数,集合属性用单数…编程中经常会遇到英语单复变换的问题,你能准确处理吗?对我来说,十年前或许可以,but don't worry,我们有现成的类提供些类服务,来自 EntityFrameWork。
阅读全文
8 Comment
分类
c#
标签
单复数变换
,
PluralizationService
,
Entity Framework
ASP.NET MVC:Expression Trees 作为参数简化查询 二
2011-09-18 17:25 by 鹤冲天, 5763 阅读,
收藏
,
编辑
摘要: Expression Trees 可用作 Action 的参数来简化查询,前文中给出的 QueryConditionExpressionModelBinder 类,比较僵化,无法满足实际要求。本文将会从这个类为起点,基于 Convention 构建一个灵活的解决方案。
阅读全文
15 Comment
分类
c#
,
ASP.NET MVC
标签
ASP.NET MVC
,
Expression Trees
,
Convention
ASP.NET MVC:Expression Trees 作为参数简化查询
2011-09-16 23:09 by 鹤冲天, 7612 阅读,
收藏
,
编辑
摘要: MVC 引入了 ModelBinder,让我们可以在 Action 中以强类型参数的形式接收 Request 中的数据。在查询 Action 中,我们可以将 Expression Trees 用作参数,通过自定义的 ModelBinder 动态自动构建查询表达式树,进一步发挥 MVC 的威力,简化编码工作。
阅读全文
18 Comment
分类
c#
,
ASP.NET MVC
标签
ASP.NET MVC
,
Expression Trees
c# 扩展方法奇思妙用基础篇九:Expression 扩展
2011-09-15 17:18 by 鹤冲天, 26406 阅读,
收藏
,
编辑
摘要: 使用 Expression 类创建 Expression Trees 的代码往往比较繁琐,可以借助扩展方法予以简化。
阅读全文
17 Comment
分类
c#
,
扩展方法
标签
扩展方法
,
c#
,
.net
,
奇思妙用
,
Expression
,
Expression Trees
c# 扩展方法奇思妙用滥用篇一:改进 2011 年最佳代码
2011-08-08 18:39 by 鹤冲天, 10422 阅读,
收藏
,
编辑
摘要: 使用 OrNot 扩展方法性改进 2011 年最佳代码:if (whatEver(you.Believe)(it).OrNot()) I.Believe(it);
阅读全文
24 Comment
分类
c#
,
扩展方法
标签
扩展方法
,
c#
,
.net
,
奇思妙用
,
OrNot
,
最佳代码
,
2011年最佳代码
保护眼睛:给 PDF 设置图片背景
2011-08-04 22:05 by 鹤冲天, 16445 阅读,
收藏
,
编辑
摘要: 从事 IT 行业,免不了经常阅读 PDF 文档。 PDF 文档纯白色背景相当刺眼,长时间阅读会导致眼睛干涩疼痛。一些 PDF 阅读软件可以修改背景,但往往只能使用纯色(单一颜色)。 PDF 文档使用淡雅的图片作背景,可减缓视觉疲劳,保护我们的眼睛。
阅读全文
36 Comment
分类
c#
标签
pdf
,
image
,
background
,
itextsharp
这种写法用过没:string.Format("{0,-10}", 8)
2011-08-03 18:46 by 鹤冲天, 8792 阅读,
收藏
,
编辑
摘要: 做 .net 开发也若干年了,如此写法确是我第一次见(更别提用了):string.Format("4G 内存便宜了{0,12:C2},我打算买{1,4}条", 145, 2);
阅读全文
19 Comment
分类
c#
标签
String.Format
,
格式化
快速创建 IEqualityComparer<T> 和 IComparer<T> 的实例
2011-08-02 21:14 by 鹤冲天, 11215 阅读,
收藏
,
编辑
摘要: .net 中 IEqualityComparer 和 IComparer 经常在 Linq 和 一些泛型集合、泛型字典类中用作参数。不过因其复杂性,包含 IEqualityComparer 或 IComparer 类型参数的函数一般使用频度不高。 尽管如此,有些情况下确非用不可,不得不创建一些新的类来实现 IEqualityComparer 或 IComparer 接口。不但增加了代码量,还对程序结构产生影响,新加入的类命名、放置、共用都是问题。 因此,我们期望能简单快速直接的创建 IEqualityComparer 和 IComparer 的实例。
阅读全文
16 Comment
分类
c#
标签
IEqualityComparer(T)
,
通用比较
,
IComparer(T)
何止 Linq 的 Distinct 不给力
2011-08-02 18:45 by 鹤冲天, 8898 阅读,
收藏
,
编辑
摘要: 昨日有文《Linq的Distinct太不给力了》,本文更深一步讨论。 .net 中经常把 IEqualityComparer 用作某些重载的参数。 虽然这些重载在日常使用中并不频繁, 不过一旦用到,大多要创建新类实现 IEqualityComparer,繁琐不给力。 本文创建 Equality 泛型类,配合一个 lambda 表达式可快速创建 IEqualityComparer 的实例。
阅读全文
21 Comment
分类
c#
标签
IEqualityComparer(T)
,
通用比较
,
Equality(T)
1
2
3
下一页
About