查看C#代码的低版本实现

本文是介绍实用工具Reflector的一个小应用的:查看C#代码的低版本实现。

为什么要查看?

语言发展的越来越高级,越来越抽象,抽象的语言势必包装隐藏了一些细节。而有时却有必要查看细节是如何,比如lambada表达、LINQ表达式等是如何实现的?IL是一个选择,但我比较讨厌不管问题大小,动辄就拿IL说事的做法,其实大多数问题不必要看IL。另一个角度,比如说明书,假若有10万言的和300字的两个版本,我想看10万言的应该比看300字的费时费力吧。动辄就拿IL说事就如同放着300字说明书不看,却研读10万言的版本。C#高级语言的特性都能用低版本来实现。因此,对神秘的lambda、LINQ等,只要将其assembly转化成C#1.0版本的,它们的实现机制也就显露了。

如何查看

这个很简单,凡是用过Reflector的都会。这儿就简单的说一下如何把高版本的C#代码转化为低版本的。通过菜单[View]->[Options],在弹出的窗口中Optimization项选择.NET 1.0即可,如下图:

举例说明

下面的截图便是我的前一篇博客中代码的低版本显示(部分):

结论

有时低版本不一定代表落后的东西,也许它能揭示一定内部规律。Red Gate's .NET Reflector是个很强大的工具,是.NET开发必不可少的工具。

原文地址:https://www.cnblogs.com/lsp/p/1657110.html