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í.

Viz také