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.
Atama işleci =
sağ işleneninin değerini, sol işleneni tarafından verilen bir değişkene, özelliğe veya indeksleyici öğesine atar. Atama ifadesinin sonucu, sol işlenene atanan değerdir. Sağ işlecin türü, sol işlecin türüyle aynı olmalı veya ona örtük olarak dönüştürülebilen türde olmalıdır.
Atama işleci =
sağa dayalıdır, yani bir form ifadesidir.
a = b = c
Şu şekilde değerlendirilir:
a = (b = c)
Aşağıdaki örnek, atama işlecinin yerel değişken, özellik ve dizinleyici ile sol operand olarak kullanımını gösterir.
List<double> numbers = [1.0, 2.0, 3.0];
Console.WriteLine(numbers.Capacity);
numbers.Capacity = 100;
Console.WriteLine(numbers.Capacity);
// Output:
// 4
// 100
int newFirstElement;
double originalFirstElement = numbers[0];
newFirstElement = 5;
numbers[0] = newFirstElement;
Console.WriteLine(originalFirstElement);
Console.WriteLine(numbers[0]);
// Output:
// 1
// 5
Atama işleminin sol tarafındaki işlenen, sağdaki işlenenin değerini alır. İşlenenler değer türlerinde olduğunda, atama sağ işlenenin içeriğini kopyalar. İşlenenler referans türündeyse, atama nesneye referansı kopyalar.
Bu işleme değer atamasıadı verilir: değer atanır.
C# 14'ten itibaren, değer atamasının sol tarafında null koşullu üye ifadesi, ?.
veya ?[]
gibi, bulunabilir. Sol taraf null ise, sağ taraftaki ifade değerlendirilmez.
referans görevlendirmesi
Referans ataması= ref
, aşağıdaki örnekte gösterildiği gibi sol işleneni sağ işlenene bir takma ad yapar:
void Display(double[] s) => Console.WriteLine(string.Join(" ", s));
double[] arr = { 0.0, 0.0, 0.0 };
Display(arr);
ref double arrayElement = ref arr[0];
arrayElement = 3.0;
Display(arr);
arrayElement = ref arr[arr.Length - 1];
arrayElement = 5.0;
Display(arr);
// Output:
// 0 0 0
// 3 0 0
// 3 0 5
Yukarıdaki örnekte, yerel başvuru değişkeniarrayElement
ilk dizi öğesinin diğer adı olarak başlatılır. Ardından, ref
son dizi öğesini göstermek üzere yeniden ayarlanır. Bir takma ad olduğundan, değerini sıradan bir atama işleciyle =
güncellediğinizde, ilgili dizi öğesi de güncellenir.
Atamanın sol işleneni ref
yerel başvuru değişkeni, ref
alan ve ref
, out
veya in
yöntem parametresi olabilir. Her iki operand da aynı türde olmalıdır.
ref
tanımlaması, bir referans değişkeninin farklı bir referanta sahip olduğu anlamına gelir. Artık önceki atıfına/bağlantısına atıfta bulunmamaktadır.
ref =
parametresinde ref
kullanılması, parametrenin artık bağımsız değişkenine başvurmadığı anlamına gelir. Ref yeniden atadıktan sonra nesnenin durumunu değiştiren tüm eylemler bu değişiklikleri yeni öğede yapar. Örneğin, aşağıdaki yöntemi göz önünde bulundurun:
private static void RefReassignAndModify(scoped ref string s)
{
string sLocal = "Hello";
Console.WriteLine(sLocal); // Output: Hello
s = ref sLocal;
s = "World";
Console.WriteLine(s); // Output: World
Aşağıdaki kullanım, s
s
'e referans olacak şekilde yeniden atandığı için yöntem çağrısından sonra ref
parametresine yapılan atamanın görünür olmadığını gösterir; çünkü sLocal
dize değiştirilmeden önce yeniden atanmıştı.
string msg = "Hi";
RefReassignAndModify(ref msg);
Console.WriteLine(msg); // Output: Hi!
Bileşik atama
İkili işleç op
için belirli bir formdaki bileşik atama ifadesi
x op= y
Şu değere eşdeğerdir:
x = x op y
x
yalnızca bir kez değerlendirilir olması dışında.
Aritmetik, Boole mantıksal ve bit düzeyinde mantıksal ve shift işleçlerinin tümü bileşik atamayı destekler.
Null birleşim ataması
Sağ işleneninin değerini sol işlenenine atamak için null birleşim atama işlecini ??=
yalnızca soldaki işlenen olarak değerlendirilirse null
kullanabilirsiniz. Daha fazla bilgi için ve ??
işleçleri makalesine??=
bakın.
İşleç aşırı yüklenebilirliği
Kullanıcı tanımlı bir tür atama işlecini aşırı yükleyemez. Ancak, kullanıcı tanımlı bir tür başka bir türe örtük bir dönüştürme tanımlayabilir. Bu şekilde, kullanıcı tanımlı türün değeri bir değişkene, özelliğe veya başka bir türdeki dizin oluşturucu öğesine atanabilir. Daha fazla bilgi için bkz . Kullanıcı tanımlı dönüştürme işleçleri.
Kullanıcı tanımlı bir tür ikili işleci op
aşırı yüklerse, op=
varsa işleç de örtük olarak aşırı yüklenir. C# 14'den başlayarak, kullanıcı tanımlı bir tür daha verimli bir uygulama sağlamak için bileşik atama işleçlerini (op=
) açıkça aşırı yükleyebilir. Genellikle, bir tür bu işleçleri aşırı yükler çünkü değer, ikili işlemin sonucunu tutmak için yeni bir örnek ayırma yerine yerinde güncelleştirilebilir. Bir tür açık bir aşırı yükleme sağlamazsa, derleyici örtük aşırı yüklemeyi oluşturur.
C# dili belirtimi
Daha fazla bilgi için C# dil belirtimininAtama işleçleri bölümüne ve Kullanıcı tanımlı bileşik atama özelliği belirtimine bakın.