Udostępnij przez


Operatory dodawania — + i +=

Wbudowane typy numeryczne całkowite i zmiennoprzecinkowe, typ ciąg oraz typy delegatów obsługują operatory + i +=.

Dokumentacja języka C# zawiera ostatnio wydaną wersję języka C#. Zawiera również początkową dokumentację dla funkcjonalności w publicznych wersjach testowych nadchodzącego wydania języka.

Dokumentacja identyfikuje dowolną funkcję po raz pierwszy wprowadzoną w ostatnich trzech wersjach języka lub w bieżącej publicznej wersji zapoznawczej.

Wskazówka

Aby dowiedzieć się, kiedy funkcja została po raz pierwszy wprowadzona w języku C#, zapoznaj się z artykułem dotyczącym historii wersji języka C#.

Aby uzyskać informacje na temat operatora arytmetycznego +, zobacz sekcje dotyczące operatorów jednoargumentowych , takich jak plus i minus oraz operator dodawania + w artykule o operatorach arytmetycznych .

Konkatenacja ciągów znaków

Gdy jeden lub oba operandy są typu ciąg, operator + łączy reprezentacje ciągów jego operandów (reprezentacja ciągu null jest pustym ciągiem):

Console.WriteLine("Forgot" + "white space");
Console.WriteLine("Probably the oldest constant: " + Math.PI);
Console.WriteLine(null + "Nothing to add.");
// Output:
// Forgotwhite space
// Probably the oldest constant: 3.14159265358979
// Nothing to add.

interpolacja ciągów zapewnia wygodniejszy sposób formatowania ciągów:

Console.WriteLine($"Probably the oldest constant: {Math.PI:F2}");
// Output:
// Probably the oldest constant: 3.14

Za pomocą interpolacji ciągów można zainicjować ciąg stały, gdy wszystkie wyrażenia używane dla symboli zastępczych są również ciągami stałymi.

Operator + wykonuje łączenie ciągów dla ciągów literałów UTF-8. Ten operator łączy dwa obiekty ReadOnlySpan<byte>.

Kombinacja delegatów

W przypadku operandów tego samego typu delegata operator zwraca nowe wystąpienie delegata, + które po wywołaniu wywołuje operand po lewej stronie, a następnie wywołuje operand prawy. Jeśli którykolwiek z operandów to null, + operator zwraca wartość innego operandu (co również może być null). W poniższym przykładzie pokazano, jak można łączyć delegatów przy użyciu + operatora :

Action a = () => Console.Write("a");
Action b = () => Console.Write("b");
Action ab = a + b;
ab();  // output: ab

Aby usunąć delegata, użyj - operatora .

Aby uzyskać więcej informacji na temat typów delegatów, zobacz Delegates.

Operator przypisania dodawania +=

Wyrażenie używające += operatora, na przykład

x += y

Jest odpowiednikiem:

x = x + y

Z tą różnicą, że x jest obliczana tylko raz.

W poniższym przykładzie pokazano użycie operatora +=:

int i = 5;
i += 9;
Console.WriteLine(i);
// Output: 14

string story = "Start. ";
story += "End.";
Console.WriteLine(story);
// Output: Start. End.

Action printer = () => Console.Write("a");
printer();  // output: a

Console.WriteLine();
printer += () => Console.Write("b");
printer();  // output: ab

Operator += służy również do określania metody obsługi zdarzeń podczas subskrybowania zdarzenia . Aby uzyskać więcej informacji, zobacz Jak subskrybować i anulować subskrypcję wydarzeń.

Przeciążenie operatora

Typ zdefiniowany przez użytkownika może przeciążenia operatora +. Przeciążenie operatora binarnego + oznacza również niejawne przeciążenie += operatora. Począwszy od języka C# 14, typ zdefiniowany przez użytkownika może jawnie przeciążyć += operatora, aby zapewnić wydajniejszą implementację. Zazwyczaj typ przeciąża operator +=, ponieważ jego wartość można zaktualizować bezpośrednio, zamiast przydzielać nowe wystąpienie do przechowywania wyniku dodawania. Jeśli typ nie zapewnia jawnego przeciążenia, kompilator generuje niejawne przeciążenie.

Specyfikacja języka C#

Aby uzyskać więcej informacji, zobacz sekcje operatora jednoargumentowego plusa i operatora dodawania w specyfikacji językaC# . Aby uzyskać więcej informacji na temat przeciążania operatorów przypisania złożonego w języku C# 14 lub nowszym, zobacz specyfikację funkcji przypisania złożonego zdefiniowanego przez użytkownika .

Zobacz też