C# 8.0

我估计大多数程序员对于C# 5.0之后的改进都没有什么太多的认知,的确从C# 5.0开始C#已经没什么太多东西可以从其他语言借鉴,Anders的重心也开始逐步倾斜到TypeScript,所以从5.0引入async之后C#语言发展速度开始减缓了。

C#6引入了大量的语法糖,例如?.和$""等等都是6.0引入的,这些东西极大的简化了C#的语法,而C#7.0则进一步的引入了元组、残破的模式匹配支持和本地函数以及意义深远的ref和readonly支持的扩大化,ref和readonly ref使得Span<T>系列类型得以引入从而改善了特定场景的性能。更重要的是这些语言层面上的改进使得类库作者可以写出特定场景的高性能代码而避免引入C/C++。至于out变量声明和throw表达式则是早就该加入的东西并没有什么太多的悬念。

值得注意的是7.0开始搞出了小版本号的概念,C#7事实上有四个版本,C#7.0、7.1、7.2和7.3,

C#8.0将在2019年发布,主要的改进包括一个破坏性修改,可空引用类型,估计届时要启用这个特性需要加编译参数,或者可以用编译参数屏蔽这个特性。这个特性据说是从Kotlin借鉴过来的,这怕是C#出现18年来第二次从Java阵营借鉴(第一次是诞生)。

其他的改进则有相对完整的模式匹配支持(虽然还很丑,而且没有UnionType/SumType还是残废),以及接口默认实现方法(这个倒是Java发明的,用来取代C#当年的扩展方法的用途,然后被C#再抄回去)。语法层面上async stream和Range可以大大简化特定场景的语法。

.NET Core 3.0

很明显微软现在将重心放在了.NET Core这一边,当然.NET Framework历史包袱太多,如果我是微软的程序员也愿意把精力放在.NET Core的框架开发上。结果就是.NET Framework 4.8一直难产,而.NET Core则一路高歌从1.0演化到3.0。

为了平滑的迁移现有应用程序,微软在.NET Core上重新实现了大部分的.NET Framework的API,当然GUI的除外,尽管如此微软还是提供了GDI的部分API的实现也就是System.Drawing。

而http://ASP.NET部分则因为历史包袱太多被全部重写,事实上我非常赞成这一决定。尽管http://ASP.NET Core是全部重写的,但是Razor和MVC的大部分语法和功能被保留下来,所以原有MVC的应用也能轻松迁移。不过,Razor的helper功能被移除仍然让我非常不爽。

新的TagHelper我认为是非常正确的道路,而事实上这就是十年前我的Jumony for MVC尝试做的事情。

平台/生态

最后聊聊平台和生态。

事实上C#和Java就是一种语言……基本上你可以认为这两者的亲缘关系就像是JavaScript和TypeScript。所以说如果你会C#那是没有道理看不懂或者写不了Java代码的。当然反过来会有点麻烦(如果你会Kotlin的话,可能更有助于学会C#)。这就像你会TS肯定能看懂JS一样……

所以纠结语言是没有什么意义的,C#和Java的主要差别在于库函数,这也是目前阻碍两边程序员跨界的重要因素。Java哔一样的语法很多时候并不是我最难以忍受的,更难以忍受的是哔一样的基础类库。

在BCL这一块,微软是毋庸置疑的Top 1。当然,在互联网时代,微软的老派作风使得对新技术和新思想的响应速度不如开源社区,尤其是对Linux和开源社区并不明朗的态度,这使得.NET诞生的这十几年来一直未能取代Java,甚至让后者做大做强。

开源的精神内核是开放,作为一个老派的程序员(掐指一算入行都二十年了),我觉得开放的心态是我还能活跃在一线写代码的原因。Java开源社区有很多好东西,也经过了很多项目的检验,.NET其实也是可以用的,毕竟,其实C#本来就是从Java改进而来,他们之间的共同点比差异多太多了。互操作性也远比其他语言容易得多,他们都是把元数据嵌到程序集里面的。

我现在做.NET Core的应用,用Eureka和Consul做服务发现,用apollo做配置中心,所有这些都不是C#写的而是Java写的,但这丝毫没有任何问题。开源的生态本来就是开放的,在我看来,未来是各种语言混合互操作的天下,虽然和.NET最开始的愿景在细节上有些偏差。但是我认为未来本来就不会用生态和语言来划分程序员……

原文地址:https://www.zhihu.com/question/321350186/answer/672775689

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com 

2019年了,C#发展的怎么样了呢?相关推荐

  1. 2019年大数据发展将走向何方

    来源:网络大数据 近日,包括CCF(中国计算机学会)大数据专家委员会.IDC公司(Internet Data Center 互联网数据中心)和Gartner公司等多家国内外知名信息技术研究机构均发布报 ...

  2. vs 选定内容没有属性页_从智能单品,到全屋智能:2019中国智能家居发展白皮书【附82页PPT】...

    2019年,智能家居行业在技术.市场和行业的变革中迎接新的挑战和机遇.一方面,AI.IoT.边缘计算全面赋能智能家居:另一方面,中国的房地产行业正在从上半场的"增量开发",切换到下 ...

  3. CCF大专委2019年大数据发展趋势预测

    CCF大专委2019年大数据发展趋势预测 周涛, 潘柱廷, 程学旗   论文引用格式: 周涛, 潘柱廷, 程学旗. CCF大专委2019年大数据发展趋势预测. 大数据[J], 2019, 5(1):  ...

  4. 【报告分享】2019年中国智能门锁发展与应用白皮书.pdf

    今天分享的报告来自阿里巴巴集团标准化部于2019年9月出品的<2019年中国智能门锁发展与应用白皮书.pdf>,报告包含七大部分:1.前言:2.全球智能门锁行业发展概况:3.中国智能门锁行 ...

  5. 《2019年数据及存储发展研究报告》十大洞察

    10月18日,在IDC中国数字化转型年度盛典上,IDC与浪潮联合发布了<2019年数据及存储发展研究报告>.在深度探讨中国数字化转型现状的基础上,报告提出,2019年中国迈入新数据时代元年 ...

  6. OFweek 2019 智能网联汽车发展高峰论坛在深圆满落幕!

    2019年是自动驾驶进入细分场景落地商用的关键时间点,一方面,车厂正加快L2/L3高级辅助驾驶的量产化,并同时逐步推进L4/L5无人驾驶项目的研发投入:另一方面,在全球车市放缓的背景下,传统主机厂和造 ...

  7. 2019 年 C++ 的发展

    C++ 软件工程师 Bartek 发布博客,回顾了 C++ 2019 年的发展情况. Bartek 主要介绍了 2019 年 C++ 特性上的演进.在全球的会议重大进展.相关工具的改进,以及 C++2 ...

  8. 一地鸡毛 OR 绝地反击,2019年区块链发展指南

    如果盘点2018年IT技术领域谁是"爆款流量",那一定有个席位是属于区块链的,不仅经历了巨头.小白纷纷入场的光辉岁月,也经历了加密货币暴跌,争先退场的一地鸡毛.而当时间行进到201 ...

  9. 回望2019,互联网产品发展只剩焦虑?

    人口红利将尽,资本寒冬到来. 2019年,是互联网最为焦虑的一年,裁员.倒闭.获客成本剧增.业务收缩等风暴席卷互联网. 越来越多企业面临着流量见底及流量成本越来越高的困境,企业纷纷转向下沉市场,试图寻 ...

  10. 百度、腾讯、滴滴,如何看2019智能网联汽车发展 | 2019互联网岳麓峰会

    *2019互联网岳麓峰会现场 在"2019互联网岳麓峰会"上,智能驾驶依旧是各方热议话题.在百度李彦宏.腾讯苏奎锋和滴滴贾兆寅眼里,2019智能汽车将会如何发展?自动驾驶到智慧城市 ...

最新文章

  1. 计算机右键管理中没有用户管理,我的电脑右键菜单中没有管理选项如何解决? 我的电脑右键菜单中没有管理选项解决的方法有哪些?...
  2. morlet小波matlab代码,morlet小波matlab程序
  3. mysql中的函数有哪些?(2.控制流函数)
  4. 正月初二 | 2月13日 星期六 | 大年初一单日票房创新纪录;除夕当天外卖订单增七成;央视春晚直播受众达11.4亿人...
  5. Visio——软件工程实验贰——面向对象软件设计方法
  6. 【软件工程】抽象泄漏
  7. 帆软实现单元格可编辑内容并保存
  8. pyecharts可视化画3D动态地球仪,世界地图,中国地图。
  9. 输入一个整数(1~7),显示对应星期英文的缩写
  10. 忘记电脑开机密码怎么办?六种方法教你解决
  11. PCB多层板生产工艺的起源与发展(一)
  12. 华大单片机开发板HC32L13X上手入门
  13. sd卡 格式化 命令 linux,在Linux命令行上格式化SD卡、USB驱动器、闪存驱动器的方法...
  14. 【java毕业设计源码】基于SSM的疫情社区物资配送系统
  15. 年会特辑丨池龙:上海“一网通办”政务服务模式分享
  16. STM32CUBE+自平衡车实践篇3.4-STM32cueb配置编码器+车轮速度测量代码实现
  17. 工具类-随即获取姓名-ZH
  18. 银行,金融行业的清算,结算到底是什么含义
  19. win8计算机关机时 重新配置windows 以后打印机不能用了,win8系统打印机发送打印任务后不打印自动消失的技巧介绍...
  20. 盛世昊通愿天下无拐,期待所有失孤家庭早日团圆

热门文章

  1. linux导出硬件信息,Linux 上生成硬件信息与配置报告: Sysreport
  2. js怎么获取一个元素与屏幕右边的距离_js中如何获取某个元素到浏览器最左和最右的距离...
  3. 【跃迁之路】【599天】程序员高效学习方法论探索系列(实验阶段356-2018.09.27)...
  4. 设置圆角、定向设置圆角-按钮等控件
  5. php可选缓存APC
  6. 常用的加密算法---数字摘要
  7. Ubuntu 12.10 安装官方JDK
  8. snmpd服务无法更改默认端口
  9. VS2010 C++下编译调试MongoDB“.NET研究”源码
  10. NA-NP-IE系列实验5:配置文件的备份和IOS 的备份