写点什么

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

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

关注

评论

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

十七、深入Python异常处理

刘润森

Python

websocket 是怎么连接的

程序员与厨子

nginx 网络 HTTP websocket

从分布式到微服务成长手册,助我面试跳槽斩获字节Offer

Java架构追梦

Java 学习 架构 面试 微服务

架构训练营 - 第4周课后作业 - 学习总结

Pudding

计算机网络基础知识总结

苹果看辽宁体育

计算机网络 计算机

技术实践丨GaussDB(DWS)运维管理功能“升级”的原理和使用

华为云开发者联盟

运维 数据 集群

架构师训练营 - 第 4周课后作业(1 期)

Pudding

云计算简史(上)- 15分钟读完15年

明道云

LAXCUS大数据集群操作系统:一个分布式分时共享E级系统软件(四)

陈泽云

人工智能 大数据 数据结构 操作系统 数据存储

诸多老牌数据仓库厂商当前,Snowflake如何创近12年最大IPO金额

华为云开发者联盟

数据仓库 数据 存储

CloudQuery v1.1.1 修复版本发布

BinTools图尔兹

数据库 sql 安全 工具软件

分布式系统设计理念这么难学?

架构师修行之路

分布式 微服务

架构师的成长之路

华章IT

CTO 架构师 架构师之道

微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)

AI乔治

Java 架构 微服务 ,docker

GO 类型接口及反射间的转换

superman

Go 语言

“区块链技术创新要植根市场”

CECBC

金融科技 信息安全

有了容器为什么kubernetes还需要Pod?

架构师修行之路

分布式 微服务 pod kubernete

“一个APP竟然可以适配这么多设备?!”《优酷响应式布局技术全解析》开放下载

破绽

阿里巴巴 阿里云 开发者 优酷 电子书

让AI人才在产业界闪闪发光:百度之星的“神奇滤镜”是怎样炼成的?

脑极体

第12周作业

Vincent

极客时间 极客大学

据说99.99%的人都会答错的类加载的问题

AI乔治

Java 架构 JVM 类加载 性能调优

关注你自己,如同篮球巨星一样,让身体最佳化,持续投入最爱的事情。

叶小鍵

健康 科普 王立铭 肥胖

5G时代音视频开发王器:WebRTC

华章IT

flutter 音视频 WebRTC React Native

第19届亚运会门票采用区块链技术防伪

CECBC

区块链技术 防伪 溯源

考研须知

时间是一个人最好的证明

考研

“区块链×多方计算”解决众多难题 将成区块链应用新场景

CECBC

区块链 数据融合

甲方日常 33

句子

工作 随笔杂谈 日常

第12周学习总结

Vincent

极客时间 极客大学

Java Reference核心原理分析

AI乔治

Java 架构 JVM 性能调优

NET-Core中的配置文件操作

为体验更多

C# .net .net core ASP.NET Core

京东智联云MySQL数据库如何保障数据的可靠性?

京东科技开发者

MySQL 数据库

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