一个例子帮你搞懂C#语言高级特性系列(01) --- 运算符重载
来源:互联网 发布:php读取json文件内容 编辑:程序博客网 时间:2024/04/29 16:45
下面的例子演示了如何使用C#的运算符重载:
using System;namespace Com.LoonStudio.Example { /// <summary> /// 平面上的点 /// </summary> public class Point { public double X { set; get; }// 横坐标 public double Y { set; get; }// 纵坐标public Point(double x, double y) {X = x;Y = y;}/// <summary>/// 将*定义为计算两点间距离的运算符/// </summary>/// <param name="p1">点1</param>/// <param name="p2">点2</param>/// <returns>两点间的距离</returns>public static double operator *(Point p1, Point p2) {double dx = p1.X - p2.X;double dy = p1.Y - p2.Y;return Math.Sqrt(dx * dx + dy * dy);} }public class Line {public Point Start { set; get; }// 起点public Point End { set; get; }// 终点public Line(Point start, Point end) {Start = start;End = end;}/// <summary>/// 将|运算符定义为判断两条线段是否平行的运算符/// </summary>/// <param name="line1">线段1</param>/// <param name="line2">线段2</param>/// <returns>平行返回true,不平行返回false</returns>public static bool operator |(Line line1, Line line2) {double slope1 = line1.End.Y - line1.Start.Y / line1.End.X - line1.Start.X;double slope2 = line2.End.Y - line2.Start.Y / line2.End.X - line2.Start.X;return slope1 == slope2;}/// <summary>/// 线段的长度(通过*运算符计算起点和终点的距离)/// </summary>public double Length {get { return Start * End; }}} class Program { static void Main(string[] args) {Point p1 = new Point(1, 3);Point p2 = new Point(4, 6);Console.WriteLine("{0:F2}", p1 * p2);Line line1 = new Line(p1, p2);Line line2 = new Line(new Point(3, 5), new Point(12, 6));Console.WriteLine(line1 | line2 ? "平行" : "不平行"); } }}
注意:在进行运算符重载的时候最好保持运算符原有的含义,还有就是记得并非所有的运算符都可以重载,都需要重载。
- 一个例子帮你搞懂C#语言高级特性系列(01) --- 运算符重载
- 一个例子帮你搞懂C#语言高级特性系列(03) --- 方法扩展
- 一个例子帮你搞懂C#语言高级特性系列(04) --- 匿名类型
- 一个例子帮你搞懂C#语言高级特性系列(05) --- 语言集成查询(LINQ)
- 一个例子帮你搞懂C#语言高级特性系列(02) --- 委托、事件和Lambda表达式
- C#学习笔记(三)—–C#高级特性:运算符重载
- C#运算符重载例子
- 运算符重载(OperatorOverloads)C#语言
- javaSE_8系列博客——Java语言的特性(二)--高级语言的基础知识(5)-- 运算符
- SpringMVC笔记系列(1)——用一个例子帮你入门
- C++ 运算符重载 一个例子
- 一个运算符重载的典型例子(重载复数的加减乘除)
- 运算符重载例子
- c# 类的高级技术2 --------运算符重载
- C#高级编程四十天----运算符重载
- C#中关于运算符重载的例子
- 运算符重载的一个例子--有理数加减乘除
- 第八章 C++函数的高级特性(8.3 参数的缺省值 8.4 运算符重载 8.5 函数内联)
- IBM敏捷转型历史事件
- eclipse maven plugin 插件 安装 和 配置
- vim script 编程基础
- ant命令总结
- UIWebView实时改变文字大小
- 一个例子帮你搞懂C#语言高级特性系列(01) --- 运算符重载
- 英国首相来中国吃火锅
- 2G无线通信模块
- 数组的排列冒泡法
- GCD下载保存图片 缓存
- 进程间通信IPC之本地套接字
- Linux修改权限命令chmod
- 明天又是星期六了!!!
- iOS:UITextFiled控件的设置