C# 關鍵字operator


operator 只要是運算符都能重載

operator 關鍵字的主要作用是用來重載運算符的,還可以用於類或結構中類型的自定義轉換。

下面看個例子

        class Feige
        {
            //定義兩個全局變量
            int a, b;
 
            //聲明帶兩個參數的構造函數
            public Feige(int a, int b)
            {
                this.a = a;
                this.b = b;
            }
 
            //重載加法運算符+
            public static Feige operator +(Feige f, Feige g)
            {
                return new Feige(f.a + g.a, f.b + g.b);
            }
 
            //重載乘法運算符*
            public static Feige operator *(Feige f, Feige g)
            {
                return new Feige(f.a * g.a, f.b * g.b);
            }
 
            //自定義轉換類型
            public static implicit operator int(Feige f)
            {
                return (int)(f.a * f.b);
            }
        }


執行

            //執行構造函數
            Feige fei = new Feige(2, 5);
            //執行構造函數
            Feige ge = new Feige(3, 6);
 
            int d = (int)(fei + ge);//調用運算符+函數
            int e = (int)(fei * ge);//調用運算符*函數
 
            //兩對象加法操作結果是:55            
            richTextBox1.Text += "兩對象加法操作結果是:" + d + "\n";
            //兩對象乘法操作結果是:180
            richTextBox1.Text += "兩對象乘法操作結果是:" + e + "\n";

實例二:

  class Salary
    {
        public int RMB { get; set; }

        public static Salary operator +(Salary s1, Salary s2)
        {
            //Salary s = new Salary();
            //s2.RMB += s1.RMB;
            //return s2;

            Salary s = new Salary();
            s.RMB = s2.RMB + s1.RMB;
            return s;
        }
        //注意下面這個重載與上面這個效果執行后的異同   上面是重新聲明了個類變量,下面這個執行結果是 s2的類變量RMB
        //public static Salary operator +(Salary s1, Salary s2)
        //{
        //    Salary s = new Salary();
        //    s2.RMB += s1.RMB;
        //    return s2;
        //}
        public static Salary operator -(Salary s1, Salary s2)
        {
            Salary s = new Salary();
            s.RMB = s1.RMB - s2.RMB;
            return s;            
        }      
    
    }

執行

        static void Main(string[] args)
        {
            Salary mikeIncome = new Salary() { RMB = 22 };
            Salary roseIncome = new Salary() { RMB = 33 };
            //Salary familyIncome = Salary.Add(mikeIncome, roseIncome);
            Salary familyIncome = mikeIncome + roseIncome;
            Console.WriteLine(familyIncome.RMB);
            Salary subtractIncome = mikeIncome - roseIncome;
            Console.WriteLine(subtractIncome.RMB);
            Console.ReadKey();

        }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM