C#9.0目标类型推导new表达式举例分析
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇内容介绍了"C#9.0目标类型推导new表达式举例分析"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所
千家信息网最后更新 2025年12月02日C#9.0目标类型推导new表达式举例分析
本篇内容介绍了"C#9.0目标类型推导new表达式举例分析"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
关于类型推导想必大家都很熟悉,它是在 var 关键字引入的时候引入 C# 的。
var i = 10;
var u = new User();编译器会通过右边的字面量自动推导左边变量的类型,这种推导方式可以归纳为:从上下文右边推导出左边的类型。我们不防把它称为源类型推导(Source-typed inferring,参考 Target-typed 自创的术语)。
相应的,有源类型推导就有目标类型推导 (Target-typed inferring),它是指从上下文左边推导出右边的类型。比如数组的初始化和 Lambda 表达式常常是目标类型推导的表达式。举个例子:
// 没有使用类型推导
string[] s = new string[] { "a", "b" };
// 目标类型推导(左推右)
string[] s = new { "a", "b" };
string[] s = new [] { "a", "b" };
// 没有使用类型推导
Users.FirstOrDefault(u => u.id = 123);
// 目标类型推导(左推右)
Users.FirstOrDefault(u => u.id = 123); 这次在 C# 9 中,增加了用户定义类型 new 表达式的目标类型推导,即通过上下文左边自动推导 new 表达式的类型,从而在使用 new 构造时省略类型的指定,请看示例:
// C# 9 之前
Point p = new Point(3, 5);
// C# 9
Point p = new (3, 5);除此之外,C# 9 也增加了操作符 ?? 和 ?: 的目标类型推导支持。之前这两个操作符必须要求两边的操作对象都是相同的类型,否则会编译报错。而在 C# 9 中,只要目标类型是操作对象共同的基类就不再会编译报错了,比如:
// Student 和 Customer 拥有共同的父类 Person
Person person = (Person)(student ?? customer); // C# 9 之前
Person person = student ?? customer; // C# 9
// 可空类型,0 和 null 都可以隐式转换为 int? 类型
int? result = b ? 0 : (int?)null; // C# 9 之前
int? result = b ? 0 : null; // C# 9其实本文的核心就一句代码:
Point p = new (3, 5);
"C#9.0目标类型推导new表达式举例分析"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
类型
C#
目标
表达式
上下
上下文
右边
编译
分析
内容
对象
操作符
更多
知识
实用
相同
学有所成
接下来
两个
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
xml文件整个保存进数据库
县级以上的网络安全
外协配套人员网络安全管理
达梦数据库dsc
计算机网络技术要英语好吗
人工智能及复杂网络技术现状
获取汇率并保存到数据库
服务器 基础 培训
网络安全的根本保证是
数据库技术的重要性ppt
百度网讯网络技术公司
家教平台数据库数据表
网络安全技术毕业设计内容
网络安全舆情通报方案
违反网络安全法应该如何处理
深信服计算机网络安全大赛
tp5数据库缓存
直销软件开发网站
海淀区专业软件开发要求
网络安全信息安全华为
饥荒创建服务器后搜不到
网络安全九不准心得
域名做服务器安全转发
网络技术员需要考神魔证书
网络安全和信息化工作任务清单
软件开发工作外包
服务器版本低怎么下载软件
办理网络软件开发营业执照
光猫虚拟服务器
0305软件开发者