复古运动: 看C#语言的发展(转)
C#从1.1到2.0再到3.0 , 许多fans为它的新特性欣喜若狂, 其实大部分只是在做一些复古运动.
C#1.x 基本上抄袭了Java,
新加的特性:
Foreach: 很多语言早就有了这个关键字. 古老的Lisp里用的是DoList 宏.
delegate: 模仿了Lisp的Funcall.
C#2.0:
Generics, 学过C++的人应该对模板都不陌生吧.虽然C#中做了少许改变.
Anonymous methods: 模仿Lisp 里面的Lambda函数.
Nullable types: Lisp 里面有(null )函数. 不管是atom 还是 list 都可以是nil.
aliases: 类似C里面的 #define
再看C#3.0
Implicitly Typed Local Variables: 许多弱类型的语言已经这样做了.
Lambda Expressions: 还是模仿了Lisp 里面的Lambda函数. 比Anonymous Methods 更加像了.
Anonymous Types: 早就觉得写Entity 太麻烦了, 我以前还写过Code Generation 来生成实体类, Anonymous Types 可就简单多了, Lisp 里面的Macro做的就是Code Generation 的工作.
Query Expressions: 我以前做的O/R Mapping 跟它有些像. 增加的 from where select 等关键字, 好像是从COmega进化过来的. 这样下去C#的关键字会越来越多, 语言变得越来越难学. 其中yield return 跟Lisp的Loop 方法如出一辙(loop... collecting..)
其实许多许多的特性, 在古老的Lisp语言中都已经存在了的. 现在把它翻出来, 稍微改变一下, 又变成新的了. 很大程度上,这种现象跟流行服饰是一样. 实在没什么东西可创新了, 就复古吧!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?