Operadores de asignación (referencia de C#)

El operador de asignación = asigna el valor de su operando de la derecha a una variable, una propiedad o un elemento de indizador proporcionado por el operando de la izquierda. El resultado de una expresión de asignación es el valor asignado al operando izquierdo. El tipo del operando de la derecha debe ser el mismo que el del operando de la izquierda o debe poder convertirse implícitamente en él.

El operador de asignación = es asociativo a la derecha, es decir, una expresión con el formato

a = b = c

se evalúa como

a = (b = c)

En el ejemplo siguiente se muestra el uso del operador de asignación con una variable local, una propiedad y un elemento indexador como su operando izquierdo:

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

Operador de asignación ref

A partir C# 7.3, puede usar el operador de asignación ref = ref para reasignar una variable local de tipo ref o local de tipo ref readonly. En el siguiente ejemplo se muestra el uso del operador de asignación 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

En el caso del operador de asignación de referencias, sus dos operandos deben ser del mismo tipo.

Asignación compuesta

Para un operador binario op, una expresión de asignación compuesta con el formato

x op= y

es equivalente a

x = x op y

salvo que x solo se evalúa una vez.

La asignación compuesta es compatible con operadores aritméticos, lógicos booleanos y de desplazamiento y lógicos bit a bit.

Asignación de uso combinado de NULL

A partir de C# 8.0, puede usar el operador de asignación de uso combinado de NULL ??= para asignar el valor de su operando derecho al operando izquierdo solo si el operando izquierdo se evalúa como null. Para obtener más información, consulte Operadores ?? y ??.

Posibilidad de sobrecarga del operador

Un tipo definido por el usuario no puede sobrecargar el operador de asignación. Sin embargo, un tipo definido por el usuario puede definir una conversión implícita a otro tipo. De este modo, el valor de un tipo definido por el usuario puede asignarse a una variable, una propiedad o un elemento de indizador de otro tipo. Para obtener más información, vea Operadores de conversión definidos por el usuario.

Un tipo definido por el usuario no puede sobrecargar de forma explícita un operador de asignación compuesta. Pero si un tipo definido por el usuario sobrecarga un operador binario op, el operador op=, si existe, también se sobrecarga de forma implícita.

especificación del lenguaje C#

Para más información, consulte la sección sobre operadores de asignación de la Especificación del lenguaje C#.

Para más información sobre el operador de asignación de referencias = ref, vea la nota de propuesta de características.

Vea también