Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Yerleşik temsilci türleri ile tam sayı ve kayan noktalı sayısal türlerin tümü ve -= işleçlerini - destekler.
C# dili başvuru belgesi, C# dilinin en son yayımlanan sürümünü gösterir. Ayrıca, yaklaşan dil sürümü için genel önizlemelerdeki özelliklere yönelik ilk belgeleri içerir.
Belgelerde ilk olarak dilin son üç sürümünde veya geçerli genel önizlemelerde sunulan tüm özellikler tanımlanır.
Tavsiye
Bir özelliğin C# dilinde ilk tanıtıldığı zamanları bulmak için C# dil sürümü geçmişi makalesine bakın.
Aritmetik işleç hakkında bilgi için Aritmetik - işleçler makalesinin Birli artı ve eksiişleçleri ile Çıkarma işleci - bölümlerine bakın.
Vekil kaldırma
Aynı temsilci türündeki işlenenler için işleç aşağıdaki - gibi hesaplanan bir temsilci örneği döndürür:
her iki işlenen de değilse
nullve sağ işlenenin çağrı listesi sol işlenenin çağrı listesinin uygun bir bitişik alt listesiyse, işlemin sonucu sağ işlenenin girdilerini sol işlenenin çağırma listesinden kaldırarak elde ettiğiniz yeni bir çağırma listesidir. Sağ işlenenin listesi sol işlenenin listesindeki birden çok bitişik alt listeyle eşleşiyorsa, işlem yalnızca en sağdaki eşleşen alt listeyi kaldırır. Eğer kaldırma işlemi boş bir listeye neden olursa, sonuçnullolur.Action a = () => Console.Write("a"); Action b = () => Console.Write("b"); var abbaab = a + b + b + a + a + b; abbaab(); // output: abbaab Console.WriteLine(); var ab = a + b; var abba = abbaab - ab; abba(); // output: abba Console.WriteLine(); var nihil = abbaab - abbaab; Console.WriteLine(nihil is null); // output: TrueSağ işlenenin çağrı listesi, sol işlenenin çağrı listesinin doğru biçimlendirilmiş ve bitişik bir alt listesi değilse, işlemin sonucu sol işlenendir. Örneğin, çok noktaya yayın temsilcisinin bir parçası olmayan bir temsilciyi kaldırmak hiçbir etki yaratmaz ve çok noktaya yayın temsilcisi değişmeden kalır.
Action a = () => Console.Write("a"); Action b = () => Console.Write("b"); var abbaab = a + b + b + a + a + b; var aba = a + b + a; var first = abbaab - aba; first(); // output: abbaab Console.WriteLine(); Console.WriteLine(object.ReferenceEquals(abbaab, first)); // output: True Action a2 = () => Console.Write("a"); var changed = aba - a; changed(); // output: ab Console.WriteLine(); var unchanged = aba - a2; unchanged(); // output: aba Console.WriteLine(); Console.WriteLine(object.ReferenceEquals(aba, unchanged)); // output: TrueYukarıdaki örnek, temsilci kaldırma sırasında temsilci örneklerinin karşılaştırıldığını da gösterir. Örneğin, özdeş lambda ifadelerinin değerlendirilmesinden oluşturulan temsilciler eşit değildir. Temsilci eşitliği hakkında daha fazla bilgi için C# dil belirtimininTemsilci eşitliği işleçleri bölümüne bakın.
Eğer sol işlenen
nullise, işlemin sonucunullolur. Eğer sağdaki işlenennullise, işlemin sonucu soldaki işlenendir.Action a = () => Console.Write("a"); var nothing = null - a; Console.WriteLine(nothing is null); // output: True var first = a - null; a(); // output: a Console.WriteLine(); Console.WriteLine(object.ReferenceEquals(first, a)); // output: True
Temsilcileri birleştirmek için işlecini+ kullanın.
Temsilci türleri hakkında daha fazla bilgi için bkz. Temsilciler.
Çıkarma atama işleci -=
işlecini -= kullanan bir ifade, örneğin
x -= y
Şu değere eşdeğerdir:
x = x - y
Sadece x bir kez değerlendirilir.
Aşağıdaki örnekte işlecinin nasıl kullanılacağı gösterilmektedir -= :
int i = 5;
i -= 9;
Console.WriteLine(i);
// Output: -4
Action a = () => Console.Write("a");
Action b = () => Console.Write("b");
var printer = a + b + a;
printer(); // output: aba
Console.WriteLine();
printer -= a;
printer(); // output: ab
Ayrıca, bir -= aboneliğini kaldırdığınızda kaldırılacak bir olay işleyici yöntemini belirtmek için işlecini de kullanırsınız. Daha fazla bilgi için Olaylara Nasıl Abone Olunur ve Abonelikten Nasıl Çıkılır bölümlerine bakabilirsiniz.
İşleç aşırı yüklenebilirliği
Kullanıcı tanımlı bir tür, işleci -. bir ikili - işleci aşırı yüklerken, işleci örtük olarak da aşırı yüklersiniz -= . C# 14'den başlayarak, kullanıcı tanımlı bir tür daha verimli bir uygulama sağlamak için açıkça işleci aşırı yükleyebilir -= . Genellikle, bir tür -= işleci aşırı yükler çünkü değer, çıkarmanın sonucunu depolamak için yeni bir örnek ayırmak yerine doğrudan güncellenebilir. Bir tür açık bir aşırı yükleme sağlamazsa, derleyici örtük aşırı yüklemeyi oluşturur.
C# dil belirtimi
Daha fazla bilgi için C# dil belirtimininBirli eksi işleci ve Çıkarma işleci bölümlerine bakın. C# 14 ve sonraki sürümlerde bileşik atama işleçlerini aşırı yükleme hakkında daha fazla bilgi için bkz. Kullanıcı tanımlı bileşik atama özelliği belirtimi.