104 lines
2.5 KiB
C#
104 lines
2.5 KiB
C#
|
|
namespace Lesson10_封装_运算符重载联系
|
|||
|
|
{
|
|||
|
|
#region 知识点一 基本概念
|
|||
|
|
//概念
|
|||
|
|
//让自定义类和结构体
|
|||
|
|
//能够使用运算符
|
|||
|
|
|
|||
|
|
//使用关键字
|
|||
|
|
//operator
|
|||
|
|
|
|||
|
|
//特点
|
|||
|
|
//1.一定是一个公共的静态方法
|
|||
|
|
//2.返回值写在operator前
|
|||
|
|
//3.逻辑处理自定义
|
|||
|
|
|
|||
|
|
//作用
|
|||
|
|
//让自定义类和结构体对象可以进行运算
|
|||
|
|
//注意
|
|||
|
|
//1.条件运算符需要承兑实现
|
|||
|
|
//2.一个符号可以多个重载
|
|||
|
|
//3.不能使用ref和out
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
#region 知识点二 基本语法
|
|||
|
|
//public static 返回值类型 operator 运算符(参数列表){}
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
#region 知识点三 实例
|
|||
|
|
class Point
|
|||
|
|
{
|
|||
|
|
public int x;
|
|||
|
|
public int y;
|
|||
|
|
public static Point operator +(Point p1,Point p2)
|
|||
|
|
{
|
|||
|
|
Point p = new Point();
|
|||
|
|
p.x = p1.x + p2.x;
|
|||
|
|
p.y = p1.y + p2.y;
|
|||
|
|
return p;
|
|||
|
|
}
|
|||
|
|
public static Point operator +(Point p1, int value)
|
|||
|
|
{
|
|||
|
|
Point p = new Point();
|
|||
|
|
p.x = p1.x + value;
|
|||
|
|
p.y = p1.y + value;
|
|||
|
|
return p;
|
|||
|
|
}
|
|||
|
|
public static Point operator +(int value, Point p1)
|
|||
|
|
{
|
|||
|
|
Point p = new Point();
|
|||
|
|
p.x = p1.x + value;
|
|||
|
|
p.y = p1.y + value;
|
|||
|
|
return p;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
#region 知识点五 可重载和不可重载的运算符
|
|||
|
|
#region 可重载
|
|||
|
|
//注意运算所需的参数数量
|
|||
|
|
//算术运算符
|
|||
|
|
//- * / % ++ --都可以
|
|||
|
|
|
|||
|
|
//逻辑运算符
|
|||
|
|
//!可以
|
|||
|
|
|
|||
|
|
//位运算符
|
|||
|
|
//| & ^ ~ >> << 可以
|
|||
|
|
|
|||
|
|
//条件运算符
|
|||
|
|
//>= <= == < >需要成对出现(写了>的就要写<的)
|
|||
|
|
//一般返回值都是bool也可以是其他值
|
|||
|
|
#endregion
|
|||
|
|
#region 不可重载
|
|||
|
|
//逻辑与&& 逻辑或||
|
|||
|
|
//索引符[]
|
|||
|
|
//强转运算符()
|
|||
|
|
//特殊运算符
|
|||
|
|
//点. 三目运算符 ? : 赋值号=
|
|||
|
|
#endregion
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
internal class Program
|
|||
|
|
{
|
|||
|
|
static void Main(string[] args)
|
|||
|
|
{
|
|||
|
|
Console.WriteLine("Hello, World!");
|
|||
|
|
#region 知识点四 使用
|
|||
|
|
Point p = new Point();
|
|||
|
|
p.x = 1;
|
|||
|
|
p.y = 1;
|
|||
|
|
Console.WriteLine(p.x+" "+p.y);
|
|||
|
|
Point p2 = new Point();
|
|||
|
|
p2.x = 2;
|
|||
|
|
p2.y = 2;
|
|||
|
|
Console.WriteLine(p2.x + " " + p2.y);
|
|||
|
|
Point p3 = p + p2;
|
|||
|
|
Console.WriteLine(p3.x + " " + p3.y);
|
|||
|
|
Point p4 = p3 + 2;
|
|||
|
|
Point p5 = 3 + p4;
|
|||
|
|
#endregion
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|