写点什么

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

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

关注

评论

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

KG+RAG 系列范式对比及 KAG 框架再思考:兼看大模型增强 KBQA 问答竞赛方案

可信AI进展

测试外包服务 | 从人员外包到测试工具、测试平台,提供全方位的测试解决方案~

测吧(北京)科技有限公司

测试

AI工具百宝箱|GenFM on ElevenReader,支持32种语言的AI播客,等你来体验

可信AI进展

探索淘宝天猫API接口:揭秘商品详情与评论的深度获取

代码忍者

API 接口 pinduoduo API

2024“创客中国”国际中小企业创新创业大赛决赛即将在南沙开启→

新消费日报

一文详解阿里云可观测体系下标签最佳实践

阿里巴巴云原生

阿里云 云原生 可观测

精益研发管理:如何用工具助力制造业IPD

axe

敏捷 精益 IPD 制造业 项目管理工具

淘宝天猫API接口探索:店铺商品全览与拍立淘图片搜索实战

代码忍者

API 接口 pinduoduo API

突破传统开发瓶颈:AI赋能下的低代码平台如何助力业务创新?

天津汇柏科技有限公司

低代码平台 AI 人工智能

优化数据库管理,Navicat for MySQL助你一臂之力

Rose

KAG 技术与实践分享|基于 KAG 框架自主完成领域图谱构建和知识问答

可信AI进展

软件测试丨用户端App通用测试方法

测试人

软件测试

CAD建模软件BricsCAD 24:性能升级,设计无界

Rose

AI浪潮下,从英伟达GPU看全球芯片市场能否撬动黄金和石油的传统地位?

GPU算力

gpu 芯片 英特尔 GPU 集群 gpu 算力

mac电池健康守护者:coconutBattery Plus,精准监控您的设备电量!

Rose

产品经理如何做好产品和需求管理

易成研发中心

产品经理 需求管理 需求管理工具

淘宝天猫API接口:关键字搜索商品列表与详情图的创新应用

代码忍者

API 接口 pinduoduo API

杰邦网络-安徽芜湖联通DC安全基地:网络安全的坚固堡垒,为企业发展保驾护航

江湖老铁

开放创新,释放云上生产力 | 2024华为云开源开发者论坛盛大开启,邀您相约上海

华为云开源

开源 开发者 开发者生态 开发者大会

用户数据安全再升级!百度网盘行业首获CCRC个人信息保护认证证书、信通院白皮书权威认可

极客天地

阿里云 Elastic Enterprise 正式上线!

阿里云大数据AI技术

大数据 elastic 阿里云 Elastic Enterprise

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