【Helper】习惯&规则
强制转换和as、is运算符
强制转换运算符使用规则
- 把一种引用类型转换成另一种引用类型。
- 把一种值类型转换成另一种值类型。
- 执行装箱货拆箱转换
- 调用一种用户自定义的转换。
as运算符使用规则
- 不能接受抛出InvalidCastException异常。如果不能执行强转,as运算符将代之以返回null。
- 把一种引用类型转换成另一种引用类型。
- You are not casting a value type to a value type. The cast operator must be used
in this case。(说实话这句话不太理解)(明白了,这是不能使用的情况)
翻译是:不会把一种值类型转换成另一种值类型。在这种情况下必须使用强制转换运算符。 - 执行装箱操作。
- You are not performing an unboxing conversion. The cast operator must be used
in this case unless the unboxing is to a nullable type.(这句话不太理解)(同上)
翻译是:不会执行拆箱转换。在这种情况下必须使用强制转换运算符,除非拆箱是一种可空类型。
原因:有些类型是不能空的。比如int,你不能把null赋值给int。
方法:使用可空类型int?。 - 不会调用一种用户自定义的转换。在这种情况下必须使用强制转换运算符。
- You are performing a cast to a type parameter T that can be only a reference
type. This is because a null may be returned after evaluating this expression.
翻译是:强制转换到只能为引用类型的类型参数T。这是由于在对该表达式求值时可能返回null。
原因:T可能是值类型。
方法:public class TestAsOp<T> where T:class {}
is运算符使用规则
- 在尝试使用as之前,需要快速确定使用as会不会返回null。
- 不需要转换,仅仅确定是否可以转换成某种类型。
- 不能接受抛出InvalidCastException异常。
- 不会把一种值类型转换成另一种值类型。在这种情况下必须使用强制转换运算符。
- 不会调用一种用户定义的转换。is将总返回一个false,而不管是否可转换。
作 者:doku
出 处:http://www.cnblogs.com/kulong995/
关于作者:喜欢编程,喜欢美食,专注于.NET项目开发。
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?