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
, out
of 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 null
in . 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 op
overbelast, 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
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort: Gedurende 2024 worden GitHub Issues uitgefaseerd als het feedbackmechanisme voor inhoud. Dit wordt vervangen door een nieuw feedbacksysteem. Ga voor meer informatie naar:Feedback verzenden en bekijken voor