盗墓不是游览观光,不是吟诗作对,不是描画绣花,不能那样文雅,那样闲庭信步,含情默默,那样天地君亲师。盗墓是一门技术,一门进行破坏的技术。古代贵族们建造坟墓的时候,一定是想方设法地防止被盗,故此无所不用其极,在墓中设置种种机关暗器,消息① 埋伏,有巨石、流沙、毒箭、毒虫、陷坑等等数不胜数。到了明代,受到西洋奇技淫巧的影响,一些大墓甚至用到了西洋的八宝转心机关,尤其是清代的帝陵,堪称集数千年防盗技术于一体的杰作。大军阀孙殿英想挖开东陵,用里面的财宝充当军饷,发动大批军队,连挖带
炸用了五六天才得手,其坚固程度可想而知。盗墓贼的课题就是千方百计地破解这些机关,进入墓中探宝。不过在现代,比起如何挖开古墓更困难的是寻找古墓,地面上有封土堆和石碑之类明显建筑的大墓早就被人发掘得差不多了,如果要找那些年深日久藏于地下,又没有任何地上标记的古墓,那就需要一定的技术和特殊工具了,铁钎、洛阳铲、竹钉、……
两个人在一起,有合适不合适之分吗?如果你还觉得这样,请看下面的故事。
刚搬进这个房子的那天,她整理完全部的东西,最后拿出一个非常精致的玻璃瓶,对他说道:“亲爱的,3个月内,你让我每哭一次,我就往里面加一滴水,代表我的眼泪。要是它满了,我就收拾我的东西离开这房子。”
男人不以为然,有点纳闷:“你们女人也太神经质了吧!就这么不信任我么,那还有什么可谈?我让你搬过来和我一起生活,是为了照顾你,不是欺负你的!”
女人说:“好男人不会让心爱的女人受一点点伤,我会记录下我为什么流泪,不会是莫名其妙的。”
“那好吧,抱~!”
两个月后,女人把那瓶子给男人看,说:“已经满一半了,在两个月内,我们是否有必要查看一下是什么问题呢?”说完递了一本精致的小笔记本给男人。
男人没有马上打开来看,他的表情里有一丝惊讶,还有点哭笑不得的意味,似乎没有想到女人的眼泪可以这么多,盛得这么快,又觉得女人是小题大作了,但是很可爱……
上回我们说到手工解析Expression Tree,以便获得其中的逻辑或者执行我们自定义的语义动作。这种做法扩展了C#语言的威力,让我们可以用C#的语法来做更多的事情,例如Linq to Sql。今天我们要学习一种相反的做法,手工创建表达式树,然后让.NET来解析它。这是一种强大的动态编程手段。我们可以用它来完成许多以前需要Reflection.Emit才能完成的任务。
上回我们说到Expression Tree是一种表示编程语言中“表达式”概念的树状数据结构,并且学习了从Lambda表达式自动生成表达式树的C#语法。那么它到底有什么用呢?其实上一回已经提到了Expression Tree的基本功能:分析表达式的逻辑、保存和传输表达式以及重新编译表达式。现在我们就分别来看这三项基本功能如何使用。
大家可能都知道Expression Tree是.NET 3.5引入的新增功能。不少朋友们已经听说过这一特性,但还没来得及了解。看看博客园里的老赵等诸多牛人,将Expression Tree玩得眼花缭乱,是否常常觉得有点落伍了呢?其实Expression Tree是一个一点就透的特性,只要对其基本概念有了一定的了解,就可以自己发挥出无数的用法。特别是之前对Reflection,泛型等知识有过一些了解的话,就会发现Expression Tree的加入绝对是你工作中的得力助手。如果你是Expression Tree的新手,那么从本文开始,你就可以领略这一工具,之后再看老赵的文章就从容不迫了~