c# 操作数符号

运算符重载

使用 operator 关键字来声明运算符。 运算符声明必须符合以下规则:

  • 同时包含 publicstatic 修饰符。
  • 一元运算符有一个输入参数,二元运算符有两个输入参数。 在每种情况下,都至少有一个参数必须具有类型 TT?,其中 T 是包含运算符声明的类型,也就是在这个类型的参数里面定义了运算符

注意:

比较运算符必须成对重载。 也就是说,如果重载一对运算符中的任一一个,则另一个运算符也必须重载。 此类配对如下所示:

  • ==!= 运算符
  • <> 运算符
  • <=>= 运算符

比如:

class myclass:MonoBehaviour
{
    private int value;//声明value私有字段
    public int Value//声明只读属性
    {
        get { return value; }
    }

//声明运算符,重载的运算符是*,二元运算符,所以需要两个参数,且参数中至少有一个包含运算符重载
//也就是在myclass类里面重载了运算符,返回值的int类型

    public static int operator *(myclass a, myclass b)
    {
        int s = a.value * b.value;
        return s;
    }
    

    public myclass(int value)//构造函数
    {
        this.value = value;
    }
//原来运算符的功能不受影响
    public int sss()
    {
        return 3 * 4;
    }
}

用户自定义转换运算符

operatorimplicitexplicit 关键字分别用于定义隐式转换或显式转换。 转换的类型必须是该转换的源类型或目标类型。 可用两种类型中的任何一种类型来定义两种用户定义类型之间的转换。

比如:

class myclass:MonoBehaviour
{
    private int value;//声明value私有字段
    public int Value//声明只读属性
    {
        get { return value; }
    }
   
    public myclass(int value)//构造函数
    {
        this.value = value;
    }

//使用operator  explicit implicit 关键字显式/隐式转换两种类型,返回值是int、myclass类型
    public static explicit operator int(myclass mc)//显示声明的myclass转int类处理方法
    {
        return mc.value;
    }
    public static implicit operator myclass(int value)//隐式声明的int转myclass类处理方法
    {
        return new myclass(value);
    }
    public static implicit operator string(myclass mc)//隐式声明的myclass转string类处理方法
    {
        return ("定义的myclass类string类型转化结果");
    }
}
 void Start()
    {
        int num = (int)new myclass(4);
        myclass s = 7;
        Debug.Log(num+" "+s.Value);//输出 4 7
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TO_ZRG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值