写点什么

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

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

关注

评论

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

Java运算符实际运用

凌轩

Java 编程语言

【转载】如何在团队中做好Code Review?

北纬32°

孩子,我们在睡前一起来阅读 15 分钟的好书,让彼此都带着好的故事入眠。

叶小鍵

正确阅读 托马斯·奥本 Doug Antin 蒂·泰德罗克

已发表的技术文章-大数据方面

绝影-大数据

短视频时代下的知识摄取

Neco.W

学习 知识管理 知识体系 短视频

Flink 完美搭档:数据存储层上的 Pravega

Apache Flink

大数据 flink 流计算 实时计算

美国播客节目《指数视角》专访李飞飞:疫情、 AI 伦理、人才培养

神经星星

人工智能 程序员 李飞飞 硅谷 AI 伦理

docker19.03读取NVIDIA显卡

首富手记

Docker Dockerfile

ARTS打卡 第1周

引花眠

ARTS 打卡计划

ARTS week 1

丽子

自制操作系统

贾献华

阿里的OceanBase上天了,但你还不会用Explain看SQL的查询计划吗?

Super~琪琪

MySQL 数据库 后台开发 后端

不要抱怨,也别憋屈

孙苏勇

职场 随笔杂谈

技术工作中的颜值

N维空间的尘埃

关于用户体验的一些思考

码上生长

android 产品开发

如何在团队中做好Code Review

Ken

团队协作 代码审查 Code Review 代码质量

系统化服务构建-软件工程分层

图南日晟

微服务 软件工程 架构设计

谈谈控制感(10):怎么做一个靠谱的人

史方远

职场 心理 成长

我的时间管理之路(附工具集合及使用心得)

YoungZY

App 时间管理

世界那么大,你有偏见吗?

谢锐 | Frozen

创业 技术管理

我们都可能陷入经济困境

董一凡

生活

实战 Java8-CompletableFuture

子路无倦

Java 多线程 java8 CompletableFuture

怎么控制老板不断加需求?

kimmking

Java开发工具与HelloWorld

编号94530

Java eclipse Hello World ! IDEA 开发工具

要和竞争对手做比较吗?

邓瑞恒Ryan

创业 战略管理

df 和 ls 命令执行夯主

首富手记

生产力

字符与编码

引花眠

计算机基础 utf-8

C#刷遍Leetcode面试题系列连载(1) - 入门与工具简介

Python名人堂

C# .net 算法 LeetCode

重新开始,被自己搞砸的生活

小天同学

个人感想 日常思考

这个名字,你不能再读错了

小天同学

历史 科普

写给产品经理的信(2):产品设计能力怎样进阶

punkboy

产品 个人成长 产品经理 产品设计 进阶

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