VB6 и VB.net имеют разные результаты с одинаковыми операторами IF

У меня есть приведенные ниже операторы IF, опробованные как на VB6, так и на VB.net.

Dim str As String = ","

If str = "," Or str = "," Or str = """" Then
   'execute A
End If

Если значение str равно «,» (запятая полной ширины), на VB6 A не выполняется, а на VB.net он переходит в оператор IF и казнит А.

Странно то, что я поставил этот оператор на наблюдение, когда str = ",", 「 str = "," Или str = "," Или str = """" 」 он возвращает false, но все равно входит в оператор IF для выполнения A.

Кто-нибудь знает, почему это происходит?

Я попробовал перейти с Or на orElse и убедился, что Опция Explicit On есть, но результат тот же. Я все еще новичок в VB.net, поэтому мне может не хватать основы, поэтому любая помощь очень ценится.

Обновлено: я добавил значение str в образец кода.

Вы должны предоставить код, который позволит нам воспроизвести проблему: dotnetfiddle.net/kPfOpR

Tim Schmelter 28.05.2024 09:25

@tim, в том-то и дело, я пробовал воспроизвести код в онлайн-компиляторах (точно такой же, как у тебя), но он работает отлично. Я не уверен, что мне нужно разобраться, это проблема окружающей среды или проблема настроек. Есть ли еще какие-нибудь вещи, которые могут повлиять на его работу?

Kuleh 28.05.2024 09:47

Но вы даже не предоставляете соответствующий код. Вы говорите, что проблема в ",", но в вашем коде это пустая строка. Скопируйте и вставьте сюда строковое значение из отладчика. Про "странную вещь" мне тоже непонятно. Этот код не имеет никакого смысла.

Tim Schmelter 28.05.2024 09:49

Простите за неточность, но код точно такой же, как ваш. str — это параметр другого метода, поэтому я просто упустил шанс указать его в своем вопросе.

Kuleh 28.05.2024 09:52

В вашем вопросе теперь другая запятая, чем в моей скрипте .net. Важно скопировать и вставить значение из отладчика, а не просто гадать, что это такое. Вы уверены, что код выполняется в If или это просто так выглядит? Возможно, вы работаете в режиме выпуска, а не в режиме отладки.

Tim Schmelter 28.05.2024 10:03

@tim Я уже добавил значение в пример кода. Я также только что понял, что значение, которое вы использовали в скрипке, представляет собой запятую половинной ширины с одним пробелом «,», но значение, которое я использовал, было запятой полной ширины «,». И я не знаю, как еще объяснить эту странную вещь, это то же самое, что я написал в посте: даже когда уравнение возвращает ложное значение, код в операторе If все равно выполняется, и я не понимаю, почему.

Kuleh 28.05.2024 10:05

Я запускаю его в режиме отладки.

Kuleh 28.05.2024 10:08
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
7
63
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Параметр «Сравнить текст» вызовет это.

Option Compare Text

Imports System

Public Module Demo
    Public Sub Main()
        Console.WriteLine("," = ",")
    End Sub
End Module

Истинный

(см. демо)

Вам следует отключить его на уровне проекта.

Это решило проблему! Теперь я понимаю! Большое спасибо!

Kuleh 28.05.2024 10:36

Другие вопросы по теме

Есть ли способ предотвратить использование *ngIf в пользу @if?
Могу ли я изменить эту формулу, чтобы она отслеживала дату начала и окончания вместо списка дат в столбце?
Определение переменной внутри условия if и программа не входит
Пропустить отложенную загрузку по классу изображения, добавленному в элемент рисунка в WordPress
Найти совпадение в указанном столбце, а затем найти совпадение в совпавшей строке?
Манипулирование данными в таблицах Google с помощью arrayformula и лямбда-помощников
Немедленный перерыв после ввода с помощью переключателя или если
В синтаксисе @if angular 17: как сохранить возвращаемое значение из функции в переменной и использовать его в том же блоке @if
Условный оператор `if ( ( i != '7' ) && ( j != '8' ) && ( k != '9' ))` дает ошибочные результаты
Как мне внести изменения в отчет ЕСЛИ И, чтобы правильно отображать произведенные или нет платежи?