【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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

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

关注

评论

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

机器学习·笔记之:Gradient Descent

Nydia

区块链人才能力评价测试机构亮相

CECBC

区块链人才

字节跳动:“挖”出来的技术战斗力

李忠良

28天写作

老同学遭遇电信诈骗纪实

石君

28天写作 电信诈骗

h-index

lidaobing

28天写作 h-index

14天1000+大集群滚动升级,银行柜台竟然毫无感觉

华为云开发者联盟

大数据 金融 FusionInsight 华为云 集群

MapReduce练习案例4 -求共同好友

小马哥

大数据 hadoop mapreduce 七日更

资本市场两极分化将是新常态

JiangX

28天写作

融资融券两融系统搭建开发

v16629866266

区块链真正的价值即将“引爆”行业应用

CECBC

区块链金融

创业失败启示录|神奇的茶学

阿萌

28天写作 创业失败启示录 青城

团队建设,凝聚人心打胜战

一笑

管理 团队建设 28天写作

localStorage和sessionStorage本地存储

我是哪吒

html html5 面试 大前端 html/css

架构师训练营第 2 期 第 7 周 作业一

老腊肉

架构师训练营第2期

老外程序员的Java性能优化方式是什么?JVM调优策略+工具+技巧

Java架构追梦

Java 学习 架构 面试 jvm调优

回到过去就能无憾了吗?「幻想短篇 22/28」

道伟

28天写作

Soul 源码阅读 06|Nacos 同步数据分析

哼干嘛

苹果设备电池及充电周期

张老蔫

28天写作

【Node.js】事件触发器 - 基础篇

德育处主任

Node 28天写作

GTX1060安装TF2-GPU

IT蜗壳-Tango

七日更

Elasticsearch 是分布式文件存储么 ?

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试

jdk8 String和StringBuilder对象创建所在位置

ilovealt

Java string StringBuilder

管理笔记[1]:成为管理者的开端“以人文本“

L3C老司机

浅说 SQLite 的许可证模式

Justin

开源 版权保护 28天写作

架构解读丨Volcano作业资源预留设计原理

华为云开发者联盟

批处理 Volcano 资源预留 作业资源预留

数字货币将如何改变日常生活

CECBC

数字货币

NeoKylin-Server-5.0离线部署etcd+flannel集群,实现docker容器跨主机网络通信

星河寒水

Docker etcd flannel 麒麟操作系统 离线部署

软件教练说:性能优化与性能设计,“相亲相爱”的一对

华为云开发者联盟

架构 性能优化 设计 程序 软件教练

提词器来了 | 视频号28天(23)

赵新龙

28天写作

两种端到端通用目标检测方法

华为云开发者联盟

训练 目标检测 端到端 DETR DeFCN

谁,是产品的利益相关方?

不离

极客大学认识产品经理 极客大学产品经理训练营 跟着二爷学产品

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