写点什么

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:004724
用户头像

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

关注

评论

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

【转载】亚信科技亮相2023移动云大会,“数智云网”助力行业转型发展

亚信AntDB数据库

AntDB AntDB数据库

MobPush 厂商通道SDK集成指南

MobTech袤博科技

团队管理的五个关键词

Jadedev

团队管理

基于 EKS Fargate 搭建微服务性能分析系统

亚马逊云科技 (Amazon Web Services)

Python

在啥样的公司工作没意义

Jadedev

职场 职场经验 职场发展

人工智能(AI)行业如此烧钱,离真正商业化还有多远,如果不商业化还能走多远? | 社区征文

迷彩

人工智能 AIGC 生成式AI 三周年征文 三周年连更

【分布式技术专题】「OSS中间件系列」Minio的文件服务的存储模型及整合SpringBoot客户端访问的实战指南

码界西柚

分布式 OSS Minio 三周年连更 SpringBoot-Starter

清晰的定位对团队成功的影响

Jadedev

团队管理

Kubernetes Gateway API 深入解读和落地指南

北京好雨科技有限公司

Kubernetes 云原生 rainbond 企业号 5 月 PK 榜 Gateway API

John Schulman:强化学习与真实性,通往TruthGPT之路

OneFlow

YApi自动生成接口文档

Liam

Postman 接口文档 API YAPI 文档生成

对象存储——Minio初探

程序员架构进阶

对象存储 Minio 5月日更 5月月更

云原生文件存储 CFS 线性扩展到千亿级文件数,百度沧海·存储论文被 EuroSys 2023 录用

Baidu AICLOUD

文件存储 元数据 posix

Flink API的4个层次

阿泽🧸

flink 三周年连更

3D点云数据集在3D数字化技术中的应用

数据堂

软件测试 | 接口测试工具的不足

测吧(北京)科技有限公司

测试

ebpf-linux 安全“双刃剑”

统信软件

Linux Kenel

科大讯飞发布讯飞星火认知大模型,深度赋能教育、办公、汽车、数字员工领域

Xue Liang

大数据 大模型时代 AIGC

在这样的公司工作没意义

Jadedev

职场 职场经验 职场发展

浪潮海岳低代码平台inBuilder开源社区版特性推荐系列-第一期

inBuilder低代码平台

开源 低代码 实操

如何为 Databend 添加新的系统表

Databend

软件测试 | 程序报错不要慌

测吧(北京)科技有限公司

测试

软件测试 | Django开发环境

测吧(北京)科技有限公司

测试

Shell的参数传递

芯动大师

Shell 三周年连更 shell参数传递

OpenHarmony设备开发从零到一

鸿蒙之旅

OpenHarmony 三周年连更

推荐6个我经常逛的“小网站”,嘿嘿嘿!!!

引迈信息

程序员 低代码 摸鱼 JNPF 文案

软件测试 | Requests库

测吧(北京)科技有限公司

测试

推开“任意门”,华为全屋智能正在实现一代科幻迷的童年梦想

脑极体

人工智能 全屋智能

蚂蚁安全科技 Nydus 与 Dragonfly 镜像加速实践 | 龙蜥技术

OpenAnolis小助手

开源 dragonfly 操作系统 龙蜥技术 镜像加速

责任心与执行力

Jadedev

职业素养 团队文化 人格

容量成本性能全都要有, Redis 容量版 PegaDB 设计与实践

Baidu AICLOUD

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