产品战略专家梁宁确认出席AICon北京站,分享AI时代下的商业逻辑与产品需求 了解详情
写点什么

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

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

关注

评论

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

IAR故障解决:由于找不到mfc140u.dll,无法继续执行代码

不脱发的程序猿

28天写作 二月春节不断更 IAR 软件故障 DLL库

深入理解 Web 协议(三):HTTP 2

vivo互联网技术

Web HTTP HTTP2.0

为了面试阿里巴巴、腾讯、字节跳动、京东、华为等大厂,我收集了8家大厂高频Java面试真题集锦(含答案)

Java架构之路

Java 程序员 架构 面试 编程语言

产品训练营第五周作业

产品经理训练营

【LeetCode】爱生气的书店老板Java题解

Albert

算法 LeetCode 28天写作 2月春节不断更

架构设计篇之微服务实战笔记(四)

小诚信驿站

架构师 刘晓成 小诚信驿站 28天写作 架构师成长笔记

农产品区块链溯源平台,区块链溯源方案

13530558032

面试腾讯T3,过关斩将直通3面,终斩获offer流下了激动的泪水(腾讯面经总结分享)

Java架构之路

Java 程序员 架构 面试 编程语言

基于simhash的文本去重原理

行者AI

Python hash

智慧组工党务解决方案,智慧党建系统

13530558032

从架构设计的演进来看,我们真的需要DDD

三石

DDD 软件架构 话题讨论

读懂框架设计的灵魂—Java反射机制

Java 编程 架构

jenkins Android 自动构建-扫码下载

三爻

互联网员工下班时间曝光:所有的光鲜,都有加班的味道

不脱发的程序猿

996 28天写作 二月春节不断更 加班文化 互联网企业

使用 RxJS 设计实现一个下载中心功能

laoergege

大前端 RXJS

Protobuf源码解读之编解码

batman

protubuf zigzag varint

话题讨论 | 你”节后综合症“了吗?

程序员架构进阶

话题讨论 28天写作 2月春节不断更 话题王者 节后焦虑

「产品经理训练营」第五章作业

Sòrγy_じò ぴé

产品经理训练营

话题讨论 | 技术从入门到熟练是怎样的?

happlyfox

话题讨论 28天写作

日记 2021年2月23日(周二)

Changing Lin

2月春节不断更

区块链电子合同应用平台,区块链存证系统

13530558032

快速搭建本土「Clubhouse」

anyRTC开发者

ios android WebRTC RTC 语音通话

做一个很出色的程序员

四猿外

Java 程序员 面试 架构师 职场成长

60K*17薪的面试题是什么样的,需要具备什么技术?首发“Java面试考点大全”

Java架构之路

Java 程序员 架构 面试 编程语言

读书笔记-MySQL索引

yunCrush

2021最新总结:阿里/京东/饿了么/拼多多/爱奇艺面经分享(堪称Offer收割机)

比伯

Java 编程 架构 面试 计算机

一篇学会RSA JavaScript加密,涉及OpenSSL

梁龙先森

JavaScript 大前端 28天写作 2月春节不断更

Java训练营第一周习题:01字节码分析

现实中游走

Java 字节码

趣谈哈希表优化:从规避 Hash 冲突到利⽤ Hash 冲突

百度Geek说

大前端 测试 哈希表 hash 研发工具

1月干货总结:EasyDL上线时序预测模型,文档翻译全新发布

百度大脑

LeetCode题解:322. 零钱兑换,动态规划,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

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