Оператор +
в VB.NET (из соображений обратной совместимости) означает и сложение и объединение в зависимости от типов переменных, с которыми он используется.С двумя числовыми типами (Integer
, Single
, Double
и т. Д.) Он складывает значения вместе, как и следовало ожидать.Однако с типами String
он объединяет две строки.
Предположительно, тогда ваши XVAL
и NEWVAL
переменные имеют тип String
, потому что они считываются из текстового файла,что заставляет VB.NET объединять их в новую строку вместо того, чтобы добавлять их вместе.Чтобы получить ожидаемое поведение, вам нужно преобразовать их в числовые типы.
В некоторых других ответах предлагается приведение просто приведения строковых значений к числовым типам (CInt
, CSng
, CDbl
и т. д.), но это может работать не так, как ожидается, если значение, содержащееся в вашей строке, не может быть преобразовано в число.Метод Int32.Parse
вызовет исключение, если значение, содержащееся в вашей строке, не может быть представлено в виде числа.Это особенно важно иметь в виду, если вы читаете значения из текстового файла, который не гарантированно придерживается каких-либо определенных ограничений.
Вместо этого вы, вероятно, захотите использовать что-то вроде .Int32.TryParse
, который возвращает значение Boolean
, указывающее, успешно ли выполнено преобразование, и не вызовет исключение.