写点什么

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

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

关注

评论

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

跨平台 SQL 编辑器和数据库查询工具RazorSQL for Mac

Mac相关知识分享

AB Micro850笔记 LD 反向接触与反向线圈

万里无云万里天

自动化 PLC 工厂运维

技术文档管理系统精选10款:如何挑选适合您的工具

爱吃小舅的鱼

技术文档管理

计时与任务管理软件RH Timer pro for Mac

Mac相关知识分享

AB Micro850笔记 LD 直接接触与直接线圈

万里无云万里天

自动化 PLC 工厂运维

UE5+ChatGPT实现3D AI虚拟人综合实战

陆通

AB Micro850笔记 LD 比较大于小于 高低限值最大最小

万里无云万里天

自动化 PLC 工厂运维

AB Micro850笔记 LD 设置线圈与重设线圈

万里无云万里天

自动化 PLC 工厂运维

Omni Recover for Mac(iPhone数据恢复工具)v3.7.5激活版

iMac小白

专业音频格式转换软件dBpoweramp Music Converter for Mac

Mac相关知识分享

软件

AB Micro850笔记 LD 逻辑运算 与或非异或

万里无云万里天

自动化 PLC 工厂运维

dBpoweramp Music Converter for Mac(音频格式转换器)R2024.09.30直装版

iMac小白

Python 命名元组:让你的数据结构更具可读性与可维护性!

LLLibra146

Python namedtuple

AB Micro850笔记 使用ccw粗略了解PLC信息

万里无云万里天

自动化 PLC 工厂运维

AB Micro850笔记 CCW F1 查看本地帮助文档

万里无云万里天

自动化 PLC 工厂运维

AB Micro850笔记 LD 指令块选择器与替换指令

万里无云万里天

自动化 PLC 工厂运维

AB Micro850笔记 RSLinx 通信配置

万里无云万里天

自动化 PLC 工厂运维

Bookends for Mac(文献书籍管理工具)v15.0.7注册激活版

iMac小白

AB Micro850笔记 使用ccw详细了解PLC信息

万里无云万里天

自动化 PLC 工厂运维

终端仿真软件ZOC8 for Mac

Mac相关知识分享

AB Micro850笔记 LD 加减乘除 取整取反取余绝对值

万里无云万里天

自动化 PLC 工厂运维

SyncBird Pro for Mac(iPhone文件管理器)v4.1.5激活版

iMac小白

Privatus for Mac(网页缓存清理工具)v7.1.1激活版

iMac小白

大模型RAG:文档分块方案与RAG全流程

程序员架构进阶

大模型 10月月更 rag 大模型应用

AB Micro850笔记 ccw 变量导出功能

万里无云万里天

自动化 PLC 工厂运维

AB Micro850笔记 ccw中能添加的设备一览

万里无云万里天

自动化 PLC 工厂运维

AB Micro850笔记 LD 字符串处理

万里无云万里天

自动化 PLC 工厂运维

Wirecast Pro for Mac(视频直播制作工具)v16.3.0中文免激活版

iMac小白

AB Micro850笔记 使用ccw了解扩展与插件信息

万里无云万里天

自动化 PLC 工厂运维

Hides for Mac(隐藏程序Mac老板键)v6.0.1激活版

iMac小白

全面解析10款文档结构化管理系统,赋能企业数字化转型

爱吃小舅的鱼

文档管理 文档结构化管理

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