(无聊散分)C# 9.0 初体验

八爻老骥 2020-11-24 09:55:30
C# 9.0又加了一些语法糖,好是不好呢?

...全文
3646 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
Laser3015 2021-04-27
  • 打赏
  • 举报
回复
还在用Net 2.0的路过
hx390620652 2021-04-26
  • 打赏
  • 举报
回复
怎么才能用啊?我是vs2019 16.10,.net5 sdk,但是在vs里写新语法还是提示Error CS0518
weixin_44594860 2020-12-10
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
增强模式匹配,就可以在简单的 switch-case 结构中写“复杂一丁点儿”的分支判断,可以简洁地书写逻辑程序。如果你没有那么基础的逻辑程序设计需求,就对它没有感觉。
  • 打赏
  • 举报
回复
“史上语法第二复杂的编程语言”?你想多了,真排起来连前10都不一定能进。Ada的复杂度大约是C++的5倍(美国国防部在1998年评估Ada95编译器的开发工作量大约是30人年,而一般估计C++编译器的工作量是5~6人年),很多老语言并非因为简单而逐步淡出,APL、Prolog、Lisp、Smalltalk、Erlang之类的都有相当的复杂度,Algol68甚至允许用户自定义运算符(注意是可以定义新的运算符,而不仅仅是运算符重载),完爆现在的主流语言,甚至一些C#的新特性,不过是从老旧的Pascal中翻出来的而已(考虑到Anders Hejlsberg的出身,这也不奇怪,他把TypeScript也搞成了C和Pascal的混合体)。
  • 打赏
  • 举报
回复
record好棒!Anders Hejlsberg不忘初心,时不时要把Pascal的东西加上来一些~~~
晨易夕 2020-11-25
  • 打赏
  • 举报
回复
感觉record可不是单纯的语法糖了,以前我们选择实体类时不知道用struct还是class,现在不用纠结,用record就行了。
OrdinaryCoder 2020-11-25
  • 打赏
  • 举报
回复
还在用2017 过一阵下一个2019试试
八爻老骥 2020-11-25
  • 打赏
  • 举报
回复
引用 6 楼 Bridge_go 的回复:
switch每个case都要break,为什么不给我默认就省了


C# 8.0就不需要break了。


public static RGBColor FromRainbow(Rainbow colorBand) =>
colorBand switch
{
Rainbow.Red => new RGBColor(0xFF, 0x00, 0x00),
Rainbow.Orange => new RGBColor(0xFF, 0x7F, 0x00),
Rainbow.Yellow => new RGBColor(0xFF, 0xFF, 0x00),
Rainbow.Green => new RGBColor(0x00, 0xFF, 0x00),
Rainbow.Blue => new RGBColor(0x00, 0x00, 0xFF),
Rainbow.Indigo => new RGBColor(0x4B, 0x00, 0x82),
Rainbow.Violet => new RGBColor(0x94, 0x00, 0xD3),
_ => throw new ArgumentException(message: "invalid enum value", paramName: nameof(colorBand)),
};
八爻老骥 2020-11-25
  • 打赏
  • 举报
回复
引用 7 楼 好奇都是要学的 的回复:
你说的是person吗? 看起来就和自定义实体类用法差不多。 .net又封装了这个语法。 用的上就用, 用不上,他再多语法糖也没用


record类型,顾名思义,如同数据库一行行记录,相当3层结构中的Value Objec,是一种简化写法,Java 15里还没实现,C# 9.0现玩起来了。

这个示例有四个语法点,除了record,还有if条件的模式匹配,顶层语句(免写Main方法的过程语句),new关键字的自动类型匹配。
xiaoxiangqing 2020-11-25
  • 打赏
  • 举报
回复
很多都是语法糖。
Xiao__Chou 2020-11-25
  • 打赏
  • 举报
回复
引用 9 楼 syeerzy 的回复:
20年前C#刚出现的时候卖点之一是 "简单". 有个老头(忘记是谁了)说, "简单不是优点, 对大部分语言而言, 简单就是不完善的意思, 等以后越来越完善就会越来越复杂了". 果然, 今天C#终于从 "简单" 变成了史上语法第二复杂的编程语言了. 加油, 等C# 20.0 的时候, 应该就比Common LISP的语法还复杂了...
C#小白表示很恐慌
qq_18146207 2020-11-25
  • 打赏
  • 举报
回复
下个新版本体验下
土土 2020-11-25
  • 打赏
  • 举报
回复
肯定好啊 不好能改么
  • 打赏
  • 举报
回复
我顶我顶我顶顶
Bridge_go 2020-11-24
  • 打赏
  • 举报
回复
switch每个case都要break,为什么不给我默认就省了
晨易夕 2020-11-24
  • 打赏
  • 举报
回复
引用 3 楼 wanghui0380 的回复:
不瞎折腾,不故意折腾。自然而然的用,不要故意折腾
赞同,需要用再用,改进能满足我的需求就用,否则也不刻意去了解。
八爻老骥 2020-11-24
  • 打赏
  • 举报
回复
引用 2 楼 不胖到130不改名字 的回复:
vs2017能支持吗


要2019 16.8以上版本。
wanghui0380 2020-11-24
  • 打赏
  • 举报
回复
不瞎折腾,不故意折腾。自然而然的用,不要故意折腾 这套东西很多是从python那里学的,玩过python的能自然而然的使用,因为他的思维方式如此 而你们,我不建议故意折腾。就像博大仙们的DDD,会做对象分析的会自然而然的做,而思维方式本身就不是那样的,就变成了那个可怕的单根,聚合根,仓储了 所以,不必强追,你就让他自然而然的接受,自然而然的写就好。思维到了,他自然而然就那么写。 就像无论sp每次上来都会说“异步啊异步啊”,但是把,如果你无法自然而然的写成异步,非要为了异步而异步,那东西其实也不好看
  • 打赏
  • 举报
回复
vs2017能支持吗
加载更多回复(5)

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧