运算符重载

由于类型之间不能用+拼接  解决办法:运算符重载

特点:
              1.运算符重载的声明方式:operator 关键字
              2.必须用public修饰且必须是类的静态的方法
              3.重载运算符的方法 不用主动调用 只要使用重载的运算符就相当调用了方法
              4.运算符只能采用值参数,不能采用ref或out参数
              5.重载运算符返回值不一定必须是自己,但一定不能是void

  internal class Program
 {

static void Main(string[] args)
 {
            
            People p = people1 + people2;
            Console.WriteLine(p.Age);
            Console.WriteLine(p.Name);
            Console.WriteLine(p.Height);
            People p1 = people1 - people2;
            Console.WriteLine(p1.Age);
            Console.WriteLine(p1.Name);
            Console.WriteLine(p1.Height);

            bool isSuccess = !people1;
           // people1 += people2; 不能显式重载  因为重载了+后 系统会自动重载 +=
            Console.ReadKey();

 }

    public class People{

      public  int Age { set; get; }
      public  int Height { set; get; }
      public  string Name { set; get; }
      // 对于+的重载

       //对于+ 运算符的重载
        public static People operator +(People stu1, People stu2)
        {
            People tempPeople = new People();
            tempPeople.Age = stu1.Age + stu2.Age;
            tempPeople.Height= stu1.Height + stu2.Height;
            tempPeople.Name = stu1.Name + stu2.Name;
            return tempPeople;
        }

        //对于+ 运算符的重载
        public static People operator -(People stu1, People stu2)
        {
            People tempPeople = new People();
            tempPeople.Age = stu1.Age - stu2.Age;
            tempPeople.Height = stu1.Height - stu2.Height;
            tempPeople.Name = "aaaa";
            return tempPeople;
        }
        //对于! 运算符的重载
        public static bool operator !(People stu1)
        {
            if (stu1.Age >18) {

                Console.WriteLine("你成年了!但是不能吸烟");
                return !true;
            }
            else
            {
                Console.WriteLine("你未成年了!但是能去赚钱");
                return !false;
            }
    }
   }  

}

运算符     可重载性
!  ++、--、     可以重载这些一元运算符
 +、-、*、/、%、&、|  可以重载这些二元运算符
 ==、!=、<、>、<=、>=      可以重载比较运算符,必须成对重载
 &&、||      不能重载条件逻辑运算符,但可以使用能够重载的&和|进行计算
 +=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=      不能显式重载赋值运算符,
            在重写单个运算符如+、-、%时,它们会被  隐式重写
 =、.、?:、->、new、is、sizeof、typeof       ()   []     不能重载这些运算符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值