写点什么

C# 8 的新提案:new 关键字类型推断

  • 2019-01-28
  • 本文字数:716 字

    阅读完需:约 2 分钟

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


2019-01-28 08:004613
用户头像

发布了 731 篇内容, 共 459.5 次阅读, 收获喜欢 2004 次。

关注

评论

发布
暂无评论
发现更多内容

全力以赴,火山引擎边缘云代表团出战亚运会

火山引擎边缘云

电竞 边缘云 边缘云原生 亚运会

低代码平台为企业应用开发提速

树上有只程序猿

低代码

是否拥有具身智能,是扫地机器人能否打破“内卷”的关键

脑极体

AI 智能扫地机器人

文本识别工具 TextSniper 免激活最新版

胖墩儿不胖y

OCR截图文字识别工具 OCR识别

窗口辅助管理: Magnet 激活中文版最新

胖墩儿不胖y

Mac软件 窗口管理软件 窗口工具

如何通过 NFTScan API 按照 NFT 合约地址检索数据?

NFT Research

NFT NFT\ NFTScan

统一观测丨使用 Prometheus 监控 SQL Server 最佳实践

阿里巴巴云原生

阿里云 云原生 Prometheus

Chrome 118 版本中的新功能

南城FE

CSS chrome 前端 浏览器

Python 集合(Sets)3

小万哥

Python 程序员 软件 后端 开发

VR虚拟现实:技在医疗行业的具体应用

3DCAT实时渲染

VR虚拟现实

Apache Dubbo 首个 Node.js 3.0-alpha 版本正式发布

阿里巴巴云原生

阿里云 云原生 dubbo

音频技术团队空降直播间,揭秘小红书语音技术创新探索与落地实践

小红书技术REDtech

音频 #人工智能

Downie 4+Permute 3,Mac从视频下载到格式转换

展初云

Mac软件 Permute 3 Downie

Atlassian 智能引领:企业管理者的智慧选择与创新之旅

跟YY哥学Jira

Atlassian Jira Confluence 合作伙伴 Bitbucket

golang面试基础-sync.map

Quincy

golang 数据结构 面试 后端

Linux桌面环境(桌面系统)

芯动大师

Grafana 10 新特性解读:体验与协作全面提升

阿里巴巴云原生

阿里云 云原生 Grafana

手把手带你用Python和文心一言搭建《AI看图写诗》网页项目

袁袁袁袁满

Python 人工智能

Mac平台更新Adobe 2024 全家桶PS、Ai、AE…

展初云

Mac Adobe软件

C# 8的新提案:new关键字类型推断_语言 & 开发_Jonathan Allen_InfoQ精选文章