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);
}
}
}







Yorum gönder