博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Build 2018大会:C#的未来
阅读量:6119 次
发布时间:2019-06-21

本文共 1030 字,大约阅读时间需要 3 分钟。

\

看新闻很累?看技术新闻更累?试试,每天上下班路上听新闻,有趣还有料!

\
\\

在C#的未来特性清单上,排在第一位的是。我们第一次报道这个特性是在去年,这里我们简要的回顾一下:所有的引用变量、参数和字段默认都是非空的。然后,和值类型一样,如果你希望它们可以为空,你就必须在类型名上加一个问号(?)来显式说明。

\\

这会是一项可选特性,目前的想法是,对于将升级到C# 8的现有项目,可空引用类型特性是关闭的。对于新项目,微软倾向于默认开启这项特性。

\\

警告会进一步分成潜在错误和表面警告。例如,如果p.MiddleName是一个string?,那么下面这行代码会是一个表面警告:

\\
string middleName = p.MiddleName;\
\\

由于危险只会出现在值解引用的时候,所以这种对局部变量的赋值并不是一个真正的问题。因此,你可以在遗留代码上禁用这个警告,以减少误报数量。

\\

同样,早于这项特性的库也不会触发警告,因为编译器不知道一个指定的参数是否应该视为可空的。

\\

GitHub上提供了。

\\

Switch表达式

\\

Switch块通常用于简单地返回单个值。在这个常见的场景中,其语法比实际完成的工作要复杂得多。考虑下下面这个使用模式匹配的例子:

\\
static string M(Person person)\{\    switch (person)\    {\        case Professor p:\            return $\"Dr. {p.LastName}\";\            case Studen s:\                return $\"{s.FirstName} {s.LastName} ({s.Level})\";\        default:\            return $\"{person.FirstName} {person.LastName}\";\    }\}\
\\

在新的提案中,反复出现的case和return语句可以省掉,其结果是下面这种更新、更紧凑的语法:

\\
static string M(Person person)\{\    return person switch\    {\        Professor p =\u0026gt; $\"Dr. {p.LastName}\

转载地址:http://oomka.baihongyu.com/

你可能感兴趣的文章
SAP HANA存储过程结果视图调用
查看>>
Android使用SAX解析XML(5)
查看>>
PPPOE拨号演练
查看>>
Java 多线程编程两个简单的样例
查看>>
SystemTimeToFileTime、FileTimeToLocalFileTime、LocalFileTimeToFileTime三函数的跨平台实现
查看>>
Codeforces Round #254 (Div. 1)-A,B
查看>>
git 强制刷新,放弃更改
查看>>
glibc/libc/blib区别
查看>>
软件研发:公司内部技术考试——答题方法
查看>>
数学思想方法-分布式计算-linux/unix技术基础(5)
查看>>
IOS学习资源收集--开发UI控件相关
查看>>
J2EE 第二阶段项目之编写代码(三)
查看>>
C#获取单个字符的拼音声母
查看>>
iOS使用ffmpeg播放rstp实时监控视频数据流
查看>>
Android url中文编码问题
查看>>
ExtJs之Ext.ElementLoader.load
查看>>
The Suspects 简单的并查集
查看>>
http://www.importnew.com/10937.html
查看>>
[javaSE] 集合框架(ArrayList,LinkedList,Vector)
查看>>
批量kill进程
查看>>