Operátory přiřazení (Referenční dokumentace jazyka C#)
Operátor přiřazení = přiřadí hodnotu jeho pravého operandu proměnné, vlastnostinebo prvku indexeru , který je dán jeho levým operandem. Výsledkem výrazu přiřazení je hodnota přiřazená k levému operandu. Typ operandu na pravé straně musí být stejný jako typ operandu na levé straně nebo implicitně převést na něj.
Operátor přiřazení = je asociativní zprava, tj. výraz formuláře.
a = b = c
je vyhodnocen jako
a = (b = c)
Následující příklad ukazuje použití operátoru přiřazení s lokální proměnnou, vlastností a prvkem indexeru jako jeho levý operand:
var numbers = new List<double>() { 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
operátor přiřazení ref
Počínaje jazykem C# 7,3 můžete použít operátor přiřazení odkazu = ref k opětovnému přiřazení místní proměnné typu ref nebo ref jen pro čtení . Následující příklad ukazuje použití operátoru přiřazení ref:
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
V případě operátoru přiřazení odkazu musí být oba jeho operandy stejného typu.
Složené přiřazení
Pro binární operátor op , výraz složeného přiřazení formuláře
x op= y
je ekvivalentem
x = x op y
s výjimkou, že x je vyhodnocena pouze jednou.
Složené přiřazení je podporováno aritmetickýmia logickými logickýmia operátory SHIFT a Shift .
Přiřazení slučování s hodnotou null
Počínaje jazykem C# 8,0 můžete použít operátor přiřazení s použitím hodnoty null ??= k přiřazení hodnoty jeho pravého operandu k jeho levému operandu pouze v případě, že je operand na levé straně vyhodnocen null . Další informace najdete v tématu ?? a?? = – článek o operátorech
Přetížení operátoru
Uživatelsky definovaný typ nemůže přetížit operátor přiřazení. Uživatelsky definovaný typ však může definovat implicitní převod na jiný typ. Tímto způsobem lze hodnotu uživatelsky definovaného typu přiřadit proměnné, vlastnosti nebo prvku indexeru jiného typu. Další informace naleznete v tématu uživatelsky definované operátory převodu.
Uživatelsky definovaný typ nemůže explicitně přetížit operátor složeného přiřazení. Pokud však uživatelsky definovaný typ přetěžuje binární operátor op , op= je operátor, pokud existuje, také implicitně přetížený.
specifikace jazyka C#
Další informace naleznete v části operátory přiřazení v tématu specifikace jazyka C#.
Další informace o operátoru přiřazení odkazu = ref najdete v poznámce k návrhu funkcí.