C# 8.0 要来啦!

hez2010 2018-11-13 06:27:21
加精
昨天微软已经发了 blog 介绍了新的 C# 8.0 会有的特性,language design 已经进入 review 阶段并且即将 triage milestones,也就是说 8.0 快要发布了。

官方 blog 地址(英文):https://blogs.msdn.microsoft.com/dotnet/2018/11/12/building-c-8-0/

下面的只是简要的概览和介绍,具体请参见我的博客:
https://blog.csdn.net/hez2010/article/details/84036742

下面来看看C# 8.0会有哪些特性:
1. 可控引用类型
2. 异步流
3. 范围和下标类型
4. 接口成员默认实现
5. 改进的模式匹配和递归 patterns
6. 基于目标类型的变量声明

下面具体说一下
1. C# 终于有了 null safety,NullReferenceException 终于可以不复存在。不过这个特性不是强制的,需要 opt-in,毕竟要考虑到以前的代码兼容性,用户手动 opt-in 前只会给出警告。

2. Async stream 挺值得期待,包括新的 await foreach 语法

3. 终于可以这样获取数组的成员了:
Index i1 = 3;  // 下标为 3 的元素
Index i2 = ^4; // 倒数第 4 个元素
int[] a = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
var rangeFromP = a[i1..i2] // 得到 3, 4, 5 (即:左闭右开区间)


4. emmm 不解释

5. 这个很舒服了,可以这样写代码了:
IEnumerable<string> GetEnrollees()
{
foreach (var p in People)
{
if (p is Student { Graduated: false, Name: string name }) yield return name;
}
}

var area = figure switch 
{
Line _ => 0,
Rectangle r => r.Width * r.Height,
Circle c => c.Radius * 2.0 * Math.PI,
_ => throw new UnknownFigureException(figure)
};


6. 这个更舒服,以后可以这样写:
Point[] ps = { new (1, 4), new (3,-2), new (9, 5) }; // all Points

声明成员的时候也可以:
private List<int> _list = new ();


不过还是有点小遗憾,Record 特性可能又要往后推了,参考 https://github.com/dotnet/csharplang/issues/39。

大家可以在这里讨论讨论,我会挑选优质回答给分哦哈哈哈哈
...全文
12112 96 打赏 收藏 转发到动态 举报
写回复
用AI写文章
96 条回复
切换为时间正序
请发表友善的回复…
发表回复
weekendsir 2019-05-25
  • 打赏
  • 举报
回复
又涨姿势了。奋进中。
l雷柏 2019-04-19
  • 打赏
  • 举报
回复
很期

待不知道何时
qq_37562384 2019-04-17
  • 打赏
  • 举报
回复
改进的模式匹配和递归 patterns
qq_44913982 2019-04-13
  • 打赏
  • 举报
回复
^_^期待中……
Roger8712 2019-04-12
  • 打赏
  • 举报
回复
很棒!非常管用!
qq_44896741 2019-04-10
  • 打赏
  • 举报
回复
6666666
King、乞丐 2019-04-08
  • 打赏
  • 举报
回复
很棒,很强大可惜目前用不到
铅与油纸伞 2019-04-03
  • 打赏
  • 举报
回复
现在大学教育还在用vc6呢
哪种情绪 2019-03-13
  • 打赏
  • 举报
回复
😝😝😝😝😝😝😝😝
哪种情绪 2019-03-13
  • 打赏
  • 举报
回复
😝😝😝😝😝😝😝😝
vvvwwwq 2019-01-26
  • 打赏
  • 举报
回复
效率应该会提高
CDboyOne 2019-01-04
  • 打赏
  • 举报
回复
唉,新特性怎么说呢,每次用上新的,旧设备就用不了了,也是一把双刃剑呀
wuweiyv1 2019-01-04
  • 打赏
  • 举报
回复
升级好快啊。。。
疯了丶 2018-12-22
  • 打赏
  • 举报
回复
感觉很多地方都不用c#了
马可萝卜i 2018-12-03
  • 打赏
  • 举报
回复
我是来看分数给我么?
onOneLight 2018-12-02
  • 打赏
  • 举报
回复
振作,继续学习
wc19840730 2018-11-30
  • 打赏
  • 举报
回复
帮顶一个~~但我觉得其实很多特性平时也用不到。
qq_35395283 2018-11-30
  • 打赏
  • 举报
回复
更新了好嘿嘿黑
mingl2000 2018-11-29
  • 打赏
  • 举报
回复
好东西。。。我喜欢
好东西。。。我喜欢
好东西。。。我喜欢
好东西。。。我喜欢
mingl2000 2018-11-29
  • 打赏
  • 举报
回复
好东西。。。我喜欢
好东西。。。我喜欢
好东西。。。我喜欢
加载更多回复(76)

110,571

社区成员

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

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

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