Share via


Toewijzingsoperatoren (C#-verwijzing)

De toewijzingsoperator = wijst de waarde van de rechteroperand toe aan een variabele, een eigenschap of een indexeerelement dat is opgegeven door de linkeroperand. Het resultaat van een toewijzingsexpressie is de waarde die is toegewezen aan de linkeroperand. Het type van de rechteroperand moet hetzelfde zijn als het type van de linkeroperand of impliciet converteerbaar naar de operand.

De toewijzingsoperator = is rechts-associatief, dat wil gezegd een expressie van het formulier

a = b = c

wordt geëvalueerd als

a = (b = c)

In het volgende voorbeeld ziet u het gebruik van de toewijzingsoperator met een lokale variabele, een eigenschap en een indexeerfunctieelement als de linkeroperand:

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

De linkeroperand van een opdracht ontvangt de waarde van de rechteroperand. Wanneer de operanden waardetypen zijn, kopieert de toewijzing de inhoud van de rechteroperand. Wanneer de operanden van referentietypen zijn, kopieert de toewijzing de verwijzing naar het object.

Dit wordt waardetoewijzing genoemd: de waarde wordt toegewezen.

verw-toewijzing

Verw-toewijzing = ref maakt de linkeroperand een alias naar de rechteroperand, zoals in het volgende voorbeeld wordt gedemonstreert:

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

In het voorgaande voorbeeld wordt de lokale referentievariabele arrayElement geïnitialiseerd als een alias voor het eerste matrixelement. Vervolgens wordt ref deze opnieuw toegewezen om te verwijzen naar het laatste matrixelement. Omdat het een alias is, wordt het bijbehorende matrixelement ook bijgewerkt wanneer u de waarde bijwerkt met een gewone toewijzingsoperator =.

De linkeroperand van ref de toewijzing kan een lokale referentievariabele, een ref veld en een ref, outof in methodeparameter zijn. Beide operanden moeten van hetzelfde type zijn.

Samengestelde toewijzing

Voor een binaire operator op, een samengestelde toewijzingsexpressie van het formulier

x op= y

is gelijk aan

x = x op y

behalve dat dit x slechts eenmaal wordt geëvalueerd.

Samengestelde toewijzing wordt ondersteund door rekenkundige, Booleaanse logische en bitsgewijze logische en shift-operators.

Toewijzing null-coalescing

U kunt de toewijzingsoperator ??= null-coalescing gebruiken om de waarde van de rechteroperand alleen toe te wijzen aan de linkeroperand als de linkeroperand resulteert nullin . Zie de ?? en ?? voor meer informatie. = artikel operatoren .

Overbelasting van operatoren

Een door de gebruiker gedefinieerd type kan de toewijzingsoperator niet overbelasten . Een door de gebruiker gedefinieerd type kan echter een impliciete conversie naar een ander type definiëren. Op die manier kan de waarde van een door de gebruiker gedefinieerd type worden toegewezen aan een variabele, een eigenschap of een indexeerfunctieelement van een ander type. Zie Door de gebruiker gedefinieerde conversieoperators voor meer informatie.

Een door de gebruiker gedefinieerd type kan een samengestelde toewijzingsoperator niet expliciet overbelasten. Als een door de gebruiker gedefinieerd type echter een binaire operator opoverbelast, wordt de op= operator, als deze bestaat, ook impliciet overbelast.

C#-taalspecificatie

Zie de sectie Toewijzingsoperatoren van de C#-taalspecificatie voor meer informatie.

Zie ook