2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

关注

评论

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

算术四则混合运算表达式的求值

可口也可樂

算法 10月月更 四则运算

Webpack中的plugin插件机制

Geek_02d948

webpack

Go Web 实战:如何创建项目及增加日志功能

宇宙之一粟

日志 Go web Go 语言 10月月更

资源不准下的网络故障定位探索

鲸品堂

故障定位 企业号十月PK榜

“程”风破浪的开发者|C#下WPF中实现贪吃蛇小游戏(超详细步骤附带源码)

木偶

C# 学习方法 贪吃蛇 10月月更 “程”风破浪的开发者

C++中的四种类型转换

可口也可樂

c++ 类型转换 10月月更

2022-webpack5实战教程

Geek_02d948

webpack

Nodejs+Redis实现简易消息队列

coder2028

node.js

TCP/IP协议中分包与重组原理介绍、分片偏移量的计算方法、IPv4报文格式

Python-派大星

10月月更

大咖说·小码王|人工智能时代,如何让孩子掌握与机器交流的语言?

大咖说

人工智能 阿里云 降本增效

我摊牌了!真正的灰度队列实现方案!全网你都搜不到!

艾小仙

Java kafka RabbitMQ 中间件 计算中间件

js裁剪(分隔)字符串常用方法

木偶

JavaScript 前端 10月月更

Internet协议栈 TCP/IP模型 、以太网封装以及解封装过程、物理层、链路层、网络层、传输层、应用层的作用 OSI七层模型

Python-派大星

10月月更

Linux网络-HTTP协议

可口也可樂

Linux 网络协议 HTTP 10月月更

Vue3必会技巧-自定义Hooks

yyds2026

Vue

调度线程池ScheduledThreadPoolExecutor的正确使用姿势

JAVA旭阳

Java 线程池 10月月更

蒙牛前数科部总监刘瑞宝分享蒙牛数字化转型成果-星策社区大咖说(一)

星策开源社区

决策 智能化转型 数据链路 蒙牛

一步一图带你深入理解 Linux 虚拟内存管理

bin的技术小屋

内存管理 Linux Kenel 虚拟内存

嵌入式 Linux 入门 环境篇(一、开发板初体验)

矜辰所致

Linux 开发板 启动流程 10月月更

项目汇报复盘

Geek_XOXO

复盘 项目复盘

以太网数据链路层、Ethernet_II帧格式、IEEE802.3帧格式,以太网的MAC地址的组成,ARP地址解析协议的工作原理,单播帧、组播帧、广播帧的区别

Python-派大星

10月月更

JavaScript刷LeetCode模板技巧篇(一)

Geek_07a724

JavaScript LeetCode

JS词法环境和执行上下文

hellocoder2029

JavaScript

“程”风破浪的开发者|元宇宙给我们带来了哪些机会

石云升

区块链 元宇宙 10月月更 “程”风破浪的开发者

Node.js实现大文件断点续传

coder2028

node.js

JS知识点梳理之作用域、作用域链、柯里化、闭包

hellocoder2029

JavaScript

【开发利器Hutool】推荐一个超好用的本地缓存

JAVA旭阳

Java hutool 10月月更

@程序猿:旺链科技惊喜已到,请速速查收~

旺链科技

区块链 产业区块链 1024程序员节 企业号十月PK榜

怎么购买公有云?具体流程是怎样?

行云管家

云计算 公有云 企业上云 云管理

Vue3知识点之数据侦测

yyds2026

Vue

融云直播SDK开路,给电商大促加点“魔法”

融云 RongCloud

直播 社交娱乐

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