C# 使用 运算符重载 隐式转换 对Point进行加减计算
2022/1/15 17:07:11
本文主要是介绍C# 使用 运算符重载 隐式转换 对Point进行加减计算,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
运算符重载方便了我们对自定义类型(自定义的类或者结构体)的计算。
运算符重载关键字 operator。
除了这些运算符不支持:x.y、f(x)、new、typeof、default、checked、unchecked、delegate、is、as、=和=>,其他都支持。
如果是一元运算符,那么运算符重载的方法 参数只有一个;如果是二元运算符,其方法参数就是两个,三元就是三个
分别就是操作符所操作的对象了。比如 !MyDefineObject 其参数就是MyDefineObject。
在比如 MyPoint1+MyPoint2 其参数前后分别是 MyPoint1和MyPoint2。
例子如下:
public class MyPoint { private Point m_point; public MyPoint(int x,int y) { m_point = new Point(x,y); } public static MyPoint operator+ (MyPoint pt,MyPoint pt2) { MyPoint ptNew = new MyPoint(pt.m_point.X + pt2.m_point.X, pt.m_point.Y + pt2.m_point.Y); return ptNew; } public static MyPoint operator -(MyPoint pt, MyPoint pt2) { MyPoint ptNew = new MyPoint(pt.m_point.X - pt2.m_point.X, pt.m_point.Y - pt2.m_point.Y); return ptNew; } //隐式转换 public static implicit operator Point (MyPoint pt) { return pt.m_point; } //显示转换 public static explicit operator MyPoint(Point pt) { return new MyPoint(pt.X,pt.Y); } public override string ToString() { return $"[{m_point.X},{m_point.Y}]"; } }
internal class Program { static void Main(string[] args) { MyPoint pt1=new MyPoint(10,10); MyPoint pt2 = new MyPoint(5, 5); MyPoint ptAdd=pt1+ pt2; MyPoint ptMinus = pt1 - pt2; Console.WriteLine(pt1 + "+" + pt2 + "=" + ptAdd); Console.WriteLine(pt1 + "-" + pt2 + "=" + ptMinus); Point pt3 = ptAdd; Point pt4 = new Point(555,555); MyPoint pt5 = (MyPoint)pt4; Console.WriteLine($"pt3=[{pt3.X},{pt3.Y}]"); Console.WriteLine($"pt5={pt5}"); } }
这篇关于C# 使用 运算符重载 隐式转换 对Point进行加减计算的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 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#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具
- 2024-01-24.NET集成IdGenerator生成分布式全局唯一ID