Megosztás a következőn keresztül:


Hozzárendelési operátorok (C#-referencia)

A hozzárendelési operátor = hozzárendeli a jobb oldali operandus értékét egy változóhoz, egy tulajdonsághoz vagy egy indexelő elemhez, amelyet a bal oldali operandus adott. A hozzárendelési kifejezés eredménye a bal oldali operandushoz rendelt érték. A jobb oldali operandus típusának meg kell egyeznie a bal oldali operandus típusával, vagy implicit módon átalakíthatónak kell lennie hozzá.

A hozzárendelési operátor = jobb asszociatív, vagyis az űrlap kifejezése

a = b = c

kiértékelése a következőképpen történik:

a = (b = c)

Az alábbi példa a hozzárendelési operátor használatát mutatja be egy helyi változóval, egy tulajdonsággal és egy indexelő elemet tartalmazó bal oldali operandussal:

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

A feladat bal oldali operandusa megkapja a jobb oldali operandus értékét . Ha az operandusok értéktípusok, a hozzárendelés átmásolja a jobb oldali operandus tartalmát. Ha az operandusok referenciatípusok, a hozzárendelés átmásolja az objektumra mutató hivatkozást.

Ezt érték-hozzárendelésnek nevezzük: az érték hozzárendelése.

újraf hozzárendelés

A Ref-hozzárendelés= ref a bal oldali operandusát a jobb oldali operandus aliasává teszi, ahogy az alábbi példa is mutatja:

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

Az előző példában a helyi referenciaváltozóarrayElement az első tömbelem aliasaként van inicializálva. Ezután újra hozzárendeli ref , hogy az utolsó tömbelemre hivatkozzon. Aliasként, amikor az értékét egy szokásos hozzárendelési operátorral =frissíti, a megfelelő tömbelem is frissül.

A hozzárendelés bal oldali operandusa ref lehet helyi referenciaváltozó,refmező és ref, outvagy in metódusparaméter. Mindkét operandusnak azonos típusúnak kell lennie.

Összetett hozzárendelés

Bináris operátor opesetén az űrlap összetett hozzárendelési kifejezése

x op= y

egyenértékű a

x = x op y

kivéve, hogy csak x egyszer van kiértékelve.

Az összetett hozzárendelést aritmetikai, logikai logikai, bitenkénti logikai és shift operátorok támogatják.

Null-szenesítés hozzárendelése

A null-szenesítési hozzárendelési operátorral ??= csak akkor rendelheti hozzá a jobb oldali operandus értékét a bal oldali operandushoz, ha a bal oldali operandus értéke.null További információ: ?? és ?? = operátorok cikke.

Operátorok túlterhelése

A felhasználó által definiált típus nem terhelheti túl a hozzárendelési operátort. A felhasználó által definiált típus azonban definiálhat implicit átalakítást egy másik típusra. Így a felhasználó által definiált típus értéke hozzárendelhető egy másik típusú változóhoz, tulajdonsághoz vagy indexelő elemhez. További információ: Felhasználó által definiált konverziós operátorok.

A felhasználó által definiált típus nem tudja explicit módon túlterhelni az összetett hozzárendelési operátorokat. Ha azonban egy felhasználó által definiált típus túlterhel egy bináris operátort op, akkor az op= operátor is implicit módon túlterhelődik.

C# nyelvspecifikáció

További információ: A C# nyelv specifikációjának Hozzárendelési operátorok szakasza.

Lásd még