C# 运算符重载

关键字 operator

一定是一个公共的静态方法

返回值写在operator前

逻辑处理 是自定义的

基本语法

public static 返回类型 operator 运算符(参数列表) //参数多少由运算符决定

{

}

作用让自定义类和结构体对象可以进行运算

注意

条件运算符需要成对实现

一个符号可以多个重载

不能用ref out



using System.Runtime.CompilerServices;
using System.Runtime.Serialization;
using System.Security.Cryptography;
using System.Text.Json.Serialization;

struct Vector2
{
   public int x;
   public  int y;
    public Vector2(int x,int y)
    {
        this.x = x;
        this.y = y;
    }
    public static bool operator ==( Vector2 a , Vector2 b)
    {
        if (a.y == b.y && a.x == b.x)
        { return true; }
        else { return false; }
    }
    public  static  bool operator !=( Vector2 a , Vector2 b ) 
    {
        if (a.y == b.y && a.x == b.x)
        { return false; }
        else { return true; }
    }
}
class Vector3
{
    public int x;
    public int y;
    public int z;
    public Vector3() { }
    public Vector3(int x,int y,int z) 
    {
        this.x = x;
        this.y = y;
        this.z = z;
    }
    public static Vector3 operator +(Vector3 a,Vector3 b)
    {
        Vector3 v = new Vector3();
        v.y = a.y + b.y;
        v.x = a.x + b.x;
        v.z = a.z + b.z;
        return v;
    }

    public static Vector3 operator -(Vector3 a, Vector3 b)
    {
        Vector3 v = new Vector3();
        v.y=a.y - b.y;
        v.x=a.x - b.x;
        v.z=a.z - b.z;
        return v;
    }

    public static Vector3 operator *(Vector3 a, int b)
    {
        a.x *= b;
        a.y *= b;
        a.z *= b;
        return a;
    }
}







class Program
{  
    static void Main()
    {
        Vector2 vector = new Vector2(1,2);
        Vector2 vector2 = new Vector2(1,3);


        if (vector == vector2) 
        {
            Console.WriteLine("对比成功相等");
        }
        else { Console.WriteLine("对比成功不相等"); }
    


        Vector3 vector3 = new Vector3(1,2,3);
        Vector3 vector31 = new Vector3(1,2,3);
        int x = 5;
        Vector3 receiver;
        receiver = vector3+vector31;
        Console.WriteLine(receiver.x+","+receiver.y+","+receiver.z);
        receiver = vector3- vector31;
        Console.WriteLine(receiver.x + "," + receiver.y + "," + receiver.z);
        receiver = vector3 * 3;
        Console.WriteLine(receiver.x + "," + receiver.y + "," + receiver.z);

    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值