【M5】对定制的“类型转换函数”保持警觉
1、隐式类型转换有两种情况:单个形参构造方法和隐式类型转换操作符。注意:隐式类型转换不是把A类型的对象a,转化为B类型的对象b,而是使用a对象构造出一个b对象,a对象并没有变化。
2、单个形参构造方法包括两种情况:声明只有单个形参;或者声明有多个形参,但是除了第一形参,其他的形参都有默认值,也就是说,只要单个形参就能构造对象。
注意:默认形参必须从右向左进行。思考为什么?
调用方法的时候,从左到右使用实参初始化形参,没有提供实参,就使用默认形参值,因此默认形参必须从右向左进行。比如,有5个形参,后面三个有默认值,调用方法的时候,提供三个实参,后面两个使用默认值。
3、隐式类型转换操作符,是一种特殊的方法,可以认为没有形参,没有返回方法,重载了目标类型的方法。
4、隐式类型转换可能在非预期的情况下进行。也就是说,程序员本来没有这个意图,但是编译器为了使方法调用成功,偷偷地进行了隐式转换。因此,隐式类型转应该尽量避免。
5、对于隐式类型转换操作符,最好不要提供,而是应该提供一个AsXXX()方法。
6、对于单个形参构造方法,有两种办法。
a、对于构造方法使用explicit,可以禁止隐式类型转换。这种情况下,可以显式地进行隐式类型转换。
b、增加一个代理类。这是因为,隐式类型转换最多只能进行一次。增加代理类,相当于需要进行两次隐式转换才能成功。这种情况下,编译器放弃执行。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理