C# 隐式转换和显示转换
2021/10/30 14:12:33
本文主要是介绍C# 隐式转换和显示转换,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
显式转换implicit关键字告诉编译器,在源代码中不必做显示的转型就可以产生调用转换操作符方法的代码.
隐式转换implicit关键字告诉编译器只有当源代码中指定了显示的转型时,才产生调用转换操作符方法的代码.
隐式转换可能在各种情况下发生,包括功能成员调用,表达式执行和赋值。
显式转换可以在强制类型转换表达式中发生。
用户定义的隐式转换应该被设计成不会抛出异常而且不会丢掉信息。
如果一个用户定义的转换将产生一个异常(例如因为源变量超出了范围)或丢掉信息(例如丢掉高位),那么这个转换应该被定义为一个显式转换。
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 显示转换和隐式转换 8 { 9 public class Rectangle 10 { 11 public double Length { get; set; } 12 13 public double Width { get; set; } 14 15 /// <summary> 16 /// 重载隐式转换操作符 17 /// </summary> 18 /// <param name="v"></param> 19 public static implicit operator Rectangle(Square v) 20 { 21 var width = v.Width; 22 var length = v.Length; 23 var num = width > length ? length : width; 24 return new Rectangle() { Width = num, Length = num }; 25 } 26 } 27 28 public class Square 29 { 30 public double Length { get; set; } 31 32 public double Width { get; set; } 33 34 /// <summary> 35 /// 重载隐式转换操作符 36 /// </summary> 37 /// <param name="v"></param> 38 public static implicit operator Square(Rectangle v) 39 { 40 var width = v.Width; 41 var length = v.Length; 42 var num = width > length ? length : width; 43 return new Square() { Width = num, Length = num }; 44 } 45 } 46 47 internal class Program 48 { 49 public static void RectToSquaExplicit(Rectangle rect, Square squa) 50 { 51 rect = squa;//把长方形隐式转换为正方形 52 Console.WriteLine($"{rect.GetType()}");//类型不会被改变 53 54 Console.WriteLine($"{rect.Width},{rect.Length}"); 55 } 56 57 public static void RectToSquaImplicit(Rectangle rect, Square squa) 58 { 59 rect = squa;//把长方形隐式转换为正方形 60 Console.WriteLine($"{rect.GetType()}");//类型不会被改变 61 62 Console.WriteLine($"{rect.Width},{rect.Length}"); 63 } 64 72 73 private static void Main(string[] args) 74 { 75 var rect = new Rectangle() { Length = 100, Width = 75 }; 76 var squa = new Square() { Length = 50, Width = 50 }; 77 78 RectToSquaImplicit(rect, squa); 79 SquaToRectImplicit(squa, rect); 80 81 var r = (Rectangle)squa; 82 83 Console.WriteLine($"{r.GetType()}");//类型被改变 84 Console.WriteLine($"{r.Width}=={r.Length}"); 85 } 86 } 87 }
这篇关于C# 隐式转换和显示转换的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-12-06使用Microsoft.Extensions.AI在.NET中生成嵌入向量
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#