Sdílet prostřednictvím


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é, vlastnosti nebo prvku indexeru zadaného jeho levým operandem. Výsledkem výrazu přiřazení je hodnota přiřazená k levému operandu. Typ pravého operandu musí být stejný jako typ levého operandu nebo implicitně převést na něj.

Operátor = přiřazení je asociativní, tedy výraz formuláře.

a = b = c

se vyhodnotí jako

a = (b = c)

Následující příklad ukazuje použití operátoru přiřazení s místní proměnnou, vlastností a indexer element jako jeho levý operand:

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

Levý operand přiřazení obdrží hodnotu operandu pravého operandu. Pokud jsou operandy hodnotových typů, přiřazení zkopíruje obsah pravého operandu. Pokud jsou operandy typu odkazu, přiřazení zkopíruje odkaz na objekt.

Tomu se říká přiřazení hodnoty: tato hodnota je přiřazena.

přiřazení odkazu

Přiřazení = ref odkazu vytvoří z levého operandu alias pravého operandu, jak ukazuje následující příklad:

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ředchozím příkladu je místní referenční proměnná arrayElement inicializována jako alias prvního prvku pole. Potom se ref znovu přiřazuje, aby odkazoval na poslední prvek pole. Protože se jedná o alias, při aktualizaci jeho hodnoty pomocí běžného operátoru =přiřazení je také aktualizován odpovídající prvek pole.

Levým operandem ref přiřazení může být místní referenční proměnná,ref pole a refparametr metody , outnebo in metoda. Oba operandy musí být stejného typu.

Složené přiřazení

U binárního operátoru opje složený výraz přiřazení formuláře.

x op= y

je ekvivalentem

x = x op y

s tím rozdílem, že x se vyhodnotí pouze jednou.

Složené přiřazení podporuje aritmetické, logické logické a bitové logické operátory a operátory posunu.

Přiřazení při souhlásání s hodnotou null

Operátor přiřazení s hodnotou null-coalescing můžete ??= použít k přiřazení hodnoty jeho pravého operandu k jeho levému operandu pouze v případě, že se operand vlevo vyhodnotí jako null. Další informace najdete v tématech ?? a ?? = operátory článku.

Přetížení operátoru

Uživatelem definovaný typ nemůže přetížit operátor přiřazení. Uživatelem definovaný typ však může definovat implicitní převod na jiný typ. Tímto způsobem lze hodnotu uživatelem definovaného typu přiřadit proměnné, vlastnosti nebo prvku indexeru jiného typu. Další informace naleznete v tématu Uživatelem definované operátory převodu.

Uživatelem definovaný typ nemůže explicitně přetížit operátor složeného přiřazení. Nicméně, pokud uživatelem definovaný typ přetíží binární operátor op, op= operátor, pokud existuje, je také implicitně přetížen.

specifikace jazyka C#

Další informace najdete v části Operátory přiřazení specifikace jazyka C#.

Viz také