Şimdi yükleniyor

C# Operatör Tanımlama

C# uygulamamızda kendi sınıflarımız için özgün operatörler tanımlayabiliriz. Bu yazımızda 4 işlem ve ek olarak mantıksal işlem operatör tanımlaması yapmak yapacağız.

Aşağıda örnek karmaşık sayılar uygulaması aşağıdaki gibidir.

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

namespace KarmasikSayilar
{
    class Program
    {
        public class KarmasikSayi
        {
            public int gercel;
            public int sanal;

            // Constructor.
            public KarmasikSayi(int gercel, int sanal)
            {
                this.gercel = gercel;
                this.sanal = sanal;
            }

            // Specify which operator to overload (+), 
            // the types that can be added (two Complex objects),
            // and the return type (Complex).
            public static KarmasikSayi operator +(KarmasikSayi c1, KarmasikSayi c2)
            {
                return new KarmasikSayi(c1.gercel + c2.gercel, c1.sanal + c2.sanal);
            }

            public static KarmasikSayi operator -(KarmasikSayi c1, KarmasikSayi c2)
            {
                return new KarmasikSayi(c1.gercel - c2.gercel, c1.sanal - c2.sanal);
            }

            public static KarmasikSayi operator *(KarmasikSayi c1, KarmasikSayi c2)
            {
                int suanGercel = c1.gercel * c2.gercel - c1.sanal * c2.sanal;
                int suanSanal = c1.gercel * c2.sanal + c1.sanal * c2.gercel;
                return new KarmasikSayi(suanGercel, suanSanal);
            }
            public static KarmasikSayi operator /(KarmasikSayi c1, KarmasikSayi c2)
            {
                int suanGercel = (c1.gercel * c2.gercel + c1.sanal * c2.sanal) / ((c2.gercel * c2.gercel) + (c2.sanal * c2.sanal));
                int suanSanal = (c1.sanal * c2.gercel - c1.gercel * c2.sanal) / ((c2.gercel * c2.gercel) + (c2.sanal * c2.sanal));
                return new KarmasikSayi(suanGercel, suanSanal);
            }

            public static implicit operator KarmasikSayi(int a)
            {
                KarmasikSayi karmasik = new KarmasikSayi(a, 0);
                return karmasik;
            }
            // Override the ToString() method to display a complex number 
            // in the traditional format:
            public override string ToString()
            {
                return (System.String.Format("{0} + {1}i", gercel, sanal));
            }
        }
        static void Main(string[] args)
        {

            KarmasikSayi c1 = new KarmasikSayi(2, 2);
            KarmasikSayi c2 = 7;

            KarmasikSayi toplam = c1 + c2;
            KarmasikSayi cikar = c1 - c2;
            KarmasikSayi carp = c1 * c2;
            KarmasikSayi bol = c1 / c2;

            Console.WriteLine("Sayi 1: {0}", c1);
            Console.WriteLine("Sayi 2: {0}", c2);
            Console.WriteLine("Topla: {0}", toplam);
            Console.WriteLine("Cikar: {0}", cikar);
            Console.WriteLine("Carp: {0}", carp);
            Console.WriteLine("Bol: {0}", bol);

        }
    }
}

Bilgisayar Mühendisi, Girişimci. Diller: Java, Swift, Python, C, C++, C#, PHP, ASP, ASP.NET. Veritabanı: MangoDB, MariaDB, MySQL, MSSQL. Programlar: IntelliJ IDEA, Xcode, Visual Studio, PyCharm, Android Studio, MySQL Workbench. Sevdiği Programlar: Notepad++, Sublime, Termius, SSMS

Yorum gönder