При применении к двум String
с оператор +
выполняет объединение .Он добавляет строку в правой части оператора к строке в левой части оператора.
(Технически это создает новый String
объект, которыйпредставляет конкатенацию левой и правой строк, поскольку строки являются неизменяемыми в .NET, но это техническая деталь, которая вас, вероятно, не волнует.)
Оператор +=
упоминаетсякак составной оператор присваивания .Он объединяет оператор, который изменяет значение (в данном случае +
) с оператором присваивания (=
), так что вы можете получить оба сразу.
Хорошо, так что вы знаете, какэто уже работает.Вы используете +=
, и вы можете добавить две строки, и все хорошо.
Итак, по аналогии, вы пытаетесь -=
.Подождите ... что должно произойти?Что значит вычесть две строки?Вычитание двух чисел, ну, это имеет смысл.Но как вычесть строку?
Не ясно, какая операция будет выполнена, поэтому оператор вычитания ничего не делает для String
объектов.Это не было определено, потому что его семантика не ясна.Определяется только конкатенация с использованием оператора +
(а также оператора &
).
Если вам нужно «удалить» часть строки, вам придется написать немного больше кода,используя один или несколько методов, предоставляемых String
class , чтобы точно указать, какую операцию вы хотите выполнить.Например, вы можете использовать метод String.Replace
для замены всех вхождений одной строки другой строкой (или даже пустой строкой):
Dim message As String = "My favorite color is yellow."
message = message.Replace("yellow", "blue")
Но в этом случае вывероятно, просто нужно сначала очистить элемент управления Label, а затем добавить только сообщения об ошибках.По сути, это то, что Ry- предложено в комментарии ;например:
Sub errorOutput(toggleError As Boolean, courseNumber As Integer)
lblError.Text = String.Empty
Dim err(6) As String
err(courseNumber) = "please ensure that what you input in Course " + courseNumber.ToString + " is a number between 0 and 100"
If toggleError = True Then
lblError.Text += err(courseNumber)
End If
End Sub