C# 重载运算符--不合理设计,只支持静态

什么叫做重载运算符

   比如:int x=1;

           int y=2;

           int total=x+y;

   我们比较喜欢看上面这种写法,而不是这种,

   int x=1;

   int y=1;

   int total=int.add(x,y); 上面所说的就是重载运算符

   在C#中,我们通过使用operator关键字来进行运算符的重载

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 重载运算符 {
    class Program {
        static void Main(string[] args) {

            Salary mikeIncome = new Salary() { RMB = 22 };
            Salary roseIncome = new Salary() { RMB = 33 };
            //Salary familyIncome = Salary.Add(mikeIncome, roseIncome);
            //Console.WriteLine(familyIncome.RMB);
            int x = 1;
            Salary testIncome=mikeIncome + roseIncome;
            Console.WriteLine(testIncome.RMB);

            Console.ReadKey();

        }
    }

    public class Salary {
        public int RMB { get; set; }
        public static Salary Add(Salary one, Salary two) {
            two.RMB = one.RMB + two.RMB;
            return two;
        }

        //现在用重载运算符来实现一下
        public static Salary operator+(Salary s1, Salary s2){
            s2.RMB = s1.RMB + s2.RMB;
            return s2;
        }

    }

}

上面就是一个重载运算符,要记住的是重载运算符,必须是静态方法。

C++里面的重载运算符是可以是实例,以及虚的重载,但是C#重载运算符竟然只支持静态方法的,看到很多人喷,一些需要高性能计算的东西,用了静态方法之后,整个性能就慢了很多,这个是发现C#设计不合理的第二个地方。

   

   

原文地址:https://www.cnblogs.com/gdouzz/p/6927296.html