NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

关注

评论

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

第十一周 学习总结

简简单单

同时拿到BATJMD的Offer是怎样的一种体验?

冰河

面试 面经 offer 一起进大厂 BATJMD

嘿,同学,你要的Java内存模型(JMM)来了

Simon郎

Java 大数据 JVM

对接量化钱包区块链开发

v16629866266

图文详解:如何给女朋友解释什么是微服务?

浅羽技术

Java zookeeper 分布式 微服务 框架

一看就懂的var、let、const三者区别

蛙人

JavaScript

我用 Python 分析了一波热卖年货,原来大家都在买这些东西?

JackTian

Python 数据分析 数据可视化 2月春节不断更 年货

Redis Sentinel 源码:Redis的高可用模型分析

华为云开发者联盟

数据库 redis 高可用 框架 redis sentinel

记录一次BAT一线互联网公司前端JavaScript面试

我是哪吒

JavaScript 学习 面试 大前端 2月春节不断更

华云大咖说 | 大型分布式监控系统建设经验

华云数据

从架构设计理念到集群部署,全面认识KubeEdge

华为云开发者联盟

架构 容器 云原生 集群 kubeedge

ZEGO即构自建MSDN有序网络,为实时音视频传输极致顺畅!

ZEGO即构

如何极速极速搭建个人博客?Copy攻城狮用的这一招很优秀!

华为云开发者联盟

JavaScript typescript GitHub React #Serverless

数字化人才有哪些特性?

boshi

数字化转型 七日更

即拼商城模式开发

luluhulian

产品 0 期 - 第四/五周作业

Jxin

第十一周课后练习

Binary

week11 作业

zbest

京东App Swift 混编及组件化落地

京东科技开发者

swift 开发者

第4周左右

林亚超

Python进阶丨如何创建你的第一个Python元类?

华为云开发者联盟

Python 编程 python元类 对象 装饰器

编程范式( Programming paradigm )简介

引花眠

编程范式

第6周作业

MR.X

大作业一:

未来已来

第十一周 安全稳定知识课后作业

简简单单

程序员防猝死指南

小白debug

程序员 职业 内存 打工人 Go 语言

笔记本电脑电池显示4%可用(已接通电源),经过清灰又莫名奇妙的可以续航啦,很奇怪!

孙叫兽

电脑故障 电池

ARTS打卡 第30周

引花眠

微服务 ARTS 打卡计划

第11周学习总结

Binary

3. 无转折不编程,滚雪球学 Python

梦想橡皮擦

Python python从入门到精通 2月春节不断更 python入门

MyChat,一个私有的“微信“

米凤君

Java 微信 Netty IM JavaFx

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