關於網路那些事...

網路行銷,SEO,網路趨勢,教學文章,網頁設計,生活時事

C# 運算子實現類別多載 - 教學筆記 (使用visual studio)

Operator Overloading on Class

在C#設計Class,可以搭配運算子(operator)來做到多載(overloading)
並且,要Overloading的運算子,必須是 static
例如:

    class Box
    {
        public int Height { get; set; }
        public int Width { get; set; }

        public Box(int h, int w)
        {
            Height = h;
            Width = w;
        }
        public static Box operator +(Box a, Box b)
        {
            int h = a.Height + b.Height;
            int w = a.Width + b.Width;
            Box res = new Box(h, w);
            return res;
        }
    }

    static void Main(string[] args)
    {
        Box b1 = new Box(14, 3);
        Box b2 = new Box(5, 7);
        Box b3 = b1 + b2;
        Console.WriteLine(b3.Height);
        Console.WriteLine(b3.Width);
    }

底下範例中,實現多載 operator +, operator -, operator *, operator /

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

namespace ConsoleApplication2
{
    class Program
    {

        class Cacul
        {
            public double A;
            public double B;
            public Cacul(double x, double y)
            {
                A = x;
                B = y;
            }
            //constructor 使用 operator overloading +
            public static Cacul operator +(Cacul j, Cacul k)
            {
                double x = j.A + k.A;
                double y = j.B + k.B;
                Cacul z = new Cacul(x, y);
                return z;
            }
            //constructor 使用 operator overloading -
            public static Cacul operator -(Cacul j, Cacul k)
            {
                double x = j.A - k.A;
                double y = j.B - k.B;
                Cacul z = new Cacul(x, y);
                return z;
            }
            //constructor 使用 operator overloading *
            public static Cacul operator *(Cacul j, Cacul k)
            {
                double x = j.A * k.A;
                double y = j.B * k.B;
                Cacul z = new Cacul(x, y);
                return z;
            }
            //constructor 使用 operator overloading /
            public static Cacul operator /(Cacul j, Cacul k)
            {
                double x = j.A / k.A;
                double y = j.B / k.B;
                Cacul z = new Cacul(x, y);
                return z;
            }
        }
        static void Main(string[] args)
        {
            Cacul t1 = new Cacul(3, 4);
            Cacul t2 = new Cacul(5, 6);
            Cacul t3 = t1 + t2;
            Console.WriteLine(t3.A);//8
            Console.WriteLine(t3.B);//10
            Cacul t4 = t1 - t2;
            Console.WriteLine(t4.A);//8
            Console.WriteLine(t4.B);//10
            Cacul t5 = t1 * t2;
            Console.WriteLine(t5.A);//8
            Console.WriteLine(t5.B);//10
            Cacul t6 = t1 / t2;
            Console.WriteLine(t6.A);//8
            Console.WriteLine(t6.B);//10

        }
    }
}


如果你喜歡我們的文章內容,請在這裡按個讚



最新文章推薦