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#设计不合理的第二个地方。
终极目标:世界大同