C# 8 的新提案:new 关键字类型推断
在很多情况下,一个地方只允许出现一种可能的类型。C# 仍然要求你明确列出类型,但如果目标类型“new”表达式提案被采用,那么就不再需要这些样板代码。
从表面上看,这个特性看起来与 var 关键字恰好相反。它不是根据表达式推断出变量类型,而是从变量推断出表达式的类型。以下是来自提案使用当前语法和建议语法的对比示例。
Dictionary<string, List<int>> field = new Dictionary<string, List<int>>();
Dictionary<string, List<int>> field = new();
正如你所看到的,当它能够从上下文中推断出类型时,就不需要指定类型。对于局部变量可能没有太大用处,但对于临时参数来说却很方便。
XmlReader.Create(reader, new XmlReaderSettings() {
IgnoreWhitespace = true });
XmlReader.Create(reader, new() {
IgnoreWhitespace = true });
在上面的代码中,XmlReaderSettings 类只是用于持有传给 XmlReader 的选项值。我们甚至可以说 XmlReaderSettings 的类型名称对于它所持有的重要信息来说有点”反客为主“了。
这个特性另一个用武之地是不能使用 var 关键字的字段和属性。例如:
private readonly static object s_syncObj = new();
根据提案,这个特性不能被用在四个地方。
枚举类型:并非所有枚举类型都包含常量零,因此应该使用显式枚举成员。
接口类型:这是一个利基特性,最好要明确指定类型。
数组类型:数组需要特殊的语法来表示长度。
结构体默认构造函数:它排除了所有基本类型和大多数值类型。如果你想使用这个类型的默认值,可以自己写。
状态
目前,Caller Expression Attribute 被列在C# 8 路线图中,状态为“Prototype”。特性测试计划可在 GitHub 上找到。
查看英文原文:https://www.infoq.com/news/2019/01/c-sharp-targeted-type-new
C# 8 的新提案:new 关键字类型推断相关推荐
- JDK8-JDK17中的新特性(var类型推断、模式匹配、Record、密封类)
文章目录 1. 新语法结构 1.1 Java的REPL工具: jShell命令 1.2 异常处理之try-catch资源关闭 1.3 局部变量类型推断 1.4 instanceof的模式匹配 1.5 ...
- C# 8的新提案:new关键字类型推断
在很多情况下,一个地方只允许出现一种可能的类型.C#仍然要求你明确列出类型,但如果目标类型"new"表达式提案被采用,那么就不再需要这些样板代码. 从表面上看,这个特性看起来与va ...
- 根据变量推断变量类型_11位专家参与其中:本地变量类型推断是Java 10中最大的新功能
根据变量推断变量类型 " Java 10不仅是对Java 9的简单稳定性和性能修复," 尽管Java 9是六个月前才发布的( 仅! ),这意味着对Java 10的期望可能不是很高, ...
- swift php 类型判断,Swift 5.1 新特性:透明类型关键字 some
相信大家都对刚发布的 SwiftUI 印象深刻,在看示例代码的时候发现 View 前面有一个关键字 some.我开始以为是 SwiftUI 自带的属性,后来经网友提醒发现是 Swift 5.1 的新 ...
- Go 语言新提案:添加模糊测试支持
Go 语言增加了支持模糊测试 (Fuzz Test) 的新提案. 据介绍,此项提案会为 Go 添加新的testing.F类型,在_test.go文件中支持FuzzFoo函数,并增加新的go命令行为.该 ...
- JDK10的新特性:本地变量类型var
文章目录 简介 为什么我们需要var var使用在什么地方 var不能用在什么地方 其他var的特点 总结 简介 java以面向对象的特性显著于世并得到了蓬勃的发展.在语言的发展过程中,为了让java ...
- 现代C++新特性 强枚举类型(PC浏览效果更佳)
文字版PDF文档链接:现代C++新特性(文字版)-C++文档类资源-CSDN下载 1. 枚举类型的弊 C++之父本贾尼·斯特劳斯特卢普曾经在他的The Design And Evolution Of ...
- 如何让Sublime Text编辑器支持新的ABAP关键字
ABAP 7.40推出了许多新的关键字 - keyword,您的Sublime Text可能无法针对这些新关键字实现期望的语法高亮显示(syntax highlight)或者自动完成(auto com ...
- Java 8新特性探究(6):泛型的目标类型推断
简单理解泛型 泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.通俗点将就是"类型的变量".这种类型变量可以用在类.接口和方法 ...
最新文章
- Java项目:茶叶售卖商城系统(java+SSM+JSP+EasyUi+mysql)
- 详解通用物体检测算法:基于锚框与无需锚框
- 2019做的第一个艰难决定
- Java Websocket实例
- quartus FIR仿真笔记
- 这相册一出手,哪个长辈搞不定?
- python如何引发和处理异常_在python3.6中,如何捕捉异常并引发异常以便稍后处理?...
- c++ 模糊搜索 正则表达式_c++使用正则表达式提取关键字的方法
- 解决:My97DatePicker 日期插件引用在PHP文件中maxDate和minDate控制失效问题
- JavaScript之语句
- mac word 复制自动产生书签
- STM32用ST-LINK V2-1烧录后,不会自动重启执行的解决办法
- STM32工具使用---STM32CubeProgrammer更新固件
- 查询当前数据库名、用户名、数据库服务器IP、端口、数据库版本信息。
- JS面试题汇总(八)
- 音视频开发——H265码流解析
- 移动APP导航栏设计对比
- 第一次有人把5G讲得这么简单明了!
- 你画我猜 计算机题目,你画我猜题目带图答案 [你画我猜题目800例]
- 云平台架构知识点总结
热门文章
- 公用ip地址查询_是什么使您无法更改公用IP地址并在Internet上造成严重破坏?
- leetcode 128最长连续序列
- Java多线程编程 — 锁优化
- Valid Number
- CSS浮动属性Float到底什么怎么回事,下面详细解释一下
- 12c分页查询特性FETCH FIRST ROWS,OFFSET ROWS FETCH NEXT ROW LIMIT Clause子句
- 易成新能加码光伏产业链 作价28.29亿收购赛维两子公司
- Linux命令之tar等
- 深入浅出Docker(三):Docker开源之路
- python类库32[多线程同步Lock+RLock+Semaphore+Event]