程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 面向對象----C#運算符重載

面向對象----C#運算符重載

編輯:C#入門知識

什麼是運算符重載?

重載是面向對象中的一個重載概念,它是對象多態性的一種不完全體現。所謂運算符重載,就是對已有的運算符重新定義,賦予其另一種功能,以適應不同的數據類型。

為什麼要需要運算符重載?

比如: 1+1=2 這是系統默認可以識別並可以運算的 1杯水+1杯水=2杯水 這時系統就無法判斷你要做什麼。 此時就需要重新定義“+”運算符就可以實現生活中各種對象之間“和”的運算。

運算符重載格式

訪問修飾權限 +數據類型+關鍵字(operator)+運算符+(形參表) { 函數體 ; }

運算符重載實例

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

namespace ConsoleApplication14
{
    class Program
    {
        public static void Main(string[] args)
        {
            Vector vect1, vect2, vect3;
            vect1 = new Vector(3.0, 3.0, 1.0);  //調用運算符函數
            vect2 = new Vector(2.0, -4.0, -4.0);
            vect3 = vect1 + vect2;              //實現運算符重載
            Console.WriteLine(vect1.ToString());
            Console.WriteLine(vect2.ToString());
            Console.WriteLine( vect3.ToString());
        }
      
        class Vector
        {
            private double x, y, z;
            public double X
            {
                get { return x; }
                set { y = value; }
            }
            public double Y
            {
                get { return y; }
                set { y = value; }
            }
            public double Z
            {
                get { return z; }
                set { z = value; }
            }
            public Vector()
            {
                x = 0;
                y = 0;
                z = 0;
            }
            public Vector(Vector rhs)
            {
                x = rhs.x;
                y = rhs.y;
                z = rhs.z;
            }
            public Vector(double x, double y, double z)
            { 
                this .x=x ;
                this .y=y;
                this.z=z;
            }
            public override string ToString()   
            {
                return "X的坐標是:"+x+"Y的坐標是:"+y+"Y的坐標是:"+z ;
            }
            public static Vector operator +(Vector lhs, Vector rhs)     //聲明運算符重載
            {
                Vector result = new Vector(lhs);
                result.x += rhs.x;
                result.y += rhs.y;
                result.z += rhs.z;
                return result;
            }
        }
        
    }
}
不同的運算符中重載時有不同的要求

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved