.NET 10.0'daki yenilikler [4]: C# 14.0'daki yeni operatör aşırı yüklemeleri

kapanış bildirimi

Bu makale İngilizce olarak da mevcuttur. Teknik yardımla tercüme edildi ve yayınlanmadan önce editoryal olarak gözden geçirildi.

C# programlama dili, 2002'deki ilk sürümünden bu yana anahtar kelimeyle operatör aşırı yüklemesine hakim oldu operator.

Duyurudan sonra devamını okuyun

Dr. Holger Schwichtenberg, 53 tanınmış uzmanıyla çok sayıda orta ve büyük ölçekli şirketi danışmanlık, eğitim ve yazılım geliştirme yoluyla destekleyen www.IT-Visions.de uzman ağının teknik direktörüdür. Çok sayıda ulusal ve uluslararası konferansa katılımı, 90'dan fazla uzmanlık kitabı ve 1.500'den fazla uzmanlık makalesi sayesinde Holger Schwichtenberg, .NET ve web teknolojileri konusunda Almanya'nın en tanınmış uzmanlarından biridir.

C# 14.0'da Microsoft artık iyileştirme için bir fırsat keşfetti: geliştiriciler artık +=, -=, *=, /=, %=, &=, |=, ^=, bileşik atama operatörleri için kendi operatör uygulamalarını tanımlayabilirler.<=, >>= ve >>>=.

Şu ana kadar temel operatör uygulamaları (örn. +'da +=, -'de -=, &'de &= vb.) her zaman burada çağrılıyordu. Bu yine de gerçekleşir, ancak yalnızca bileşik atama operatörü için özel bir operatör uygulaması yoksa.

Bu, bellek kullanımı üzerinde daha fazla kontrol sağlar: bileşik/kesilmiş atama operatörleri ile iki nesne arasındaki işlemi, yeni bir nesne oluşturulmayacak, ancak mevcut bir nesnenin kullanılmaya devam edeceği şekilde uygulayabilirsiniz.

Bileşik atama operatörleri (diğer operatörlerden farklı olarak) static ve ver void nesneyi kendileri manipüle ederken geri dönerler.

Aşağıdaki kod parçacığı, kullanıcı tanımlı bileşik atama işleçlerini kullanır:

Duyurudan sonra devamını okuyun


namespace NET10_Console;

/// <summary>
/// Klasse mit Operatorüberladung für +, ++ und +=
/// </summary>
public class Kontostand
{
 public string IBAN { get; set; }
 public decimal Betrag { get; set; }

 public Kontostand(string iBAN, decimal betrag)
 {
  Betrag = betrag;
  IBAN = iBAN;
 }

 // ALT: Operatorüberladung für +
 public static Kontostand operator +(Kontostand a, Kontostand b)
 {
  if (a == null || b == null)
   throw new ArgumentNullException();

  return new Kontostand(a.IBAN, a.Betrag + b.Betrag);
 }

 // NEU: Operatorüberladung für ++ 
 public void operator ++()
 {
  this.Betrag += 1;
 }

 // NEU: Operatorüberladung für += 
 public void operator +=(decimal b)
 {
  this.Betrag += b;
 }

 public override string ToString()
 {
  return $"Konto {IBAN}: {Betrag:c}"; // formatiert als Währung


(Ben)


Yayımlandı

kategorisi

yazarı:

Etiketler:

Yorumlar

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir