Нет преобразований из строки в тип boolean, но я получаю сообщение об ошибке

 If txtFirstName.Text <> "First Name" & txtLastName.Text <> "Last Name" & txtUsername.Text <> "Username" & txtPassword.Text = txtConfirmPassword.Text & txtAge.Text <> "Age ( Years )" & txtHeight.Text <> "Height ( Cm )" & txtWeight.Text <> "Weight ( Kg )" & txtAroundWrist.Text <> "Around Wrist ( Cm )" & ComboBox1.Text <> "" Then
     'do something
End If

Я всегда получаю ошибку Conversion from string to type boolean is not valid в первой строке (if txtFirstName.Text...) в vb 2010.

Что ты предлагаешь?


person user3204181    schedule 22.03.2014    source источник
comment
вы имеете в виду And или & оба разные   -  person bansi    schedule 22.03.2014
comment
Почти уверен, и имелось в виду ..   -  person Tony Hopkinson    schedule 22.03.2014
comment
Я чувствую, что вы перепутали значение по умолчанию и подсказку в своем пользовательском интерфейсе. Или у вас есть это для семьи Имя.   -  person Tony Hopkinson    schedule 22.03.2014


Ответы (2)


Вам нужно использовать оператор And вместо оператора &.

person Donal    schedule 22.03.2014
comment
Имейте плюс за то, что вы быстрее меня. - person Tony Hopkinson; 22.03.2014
comment
В этом случае оператор AndAlso был бы даже лучше. - person Andrew Morton; 22.03.2014
comment
Да, вынужден согласиться, И еще КЗ, так что еще правильнее будет. - person Donal; 22.03.2014

& в VB.NET предназначен для конкатенации строк.

Вероятно, вы пришли из мира C/C++/C#, где & означает And. Вы можете использовать And в VB.NET или лучше использовать оператор AndAlso (эквивалентен && в C#). Как это:

If txtFirstName.Text <> "First Name" AndAlso
   txtLastName.Text <> "Last Name" AndAlso
   txtUsername.Text <> "Username" AndAlso
   txtPassword.Text = txtConfirmPassword.Text AndAlso
   txtAge.Text <> "Age ( Years )" AndAlso
   txtHeight.Text <> "Height ( Cm )" AndAlso
   txtWeight.Text <> "Weight ( Kg )" AndAlso
   txtAroundWrist.Text <> "Around Wrist ( Cm )" AndAlso
   ComboBox1.Text <> "" Then
 'do something
End If

Как правило, And используется как побитовый оператор, а AndAlso — как логический. Смотрите также:

person Neolisk    schedule 22.03.2014
comment
если используется оператор And, то будут выполняться все сравнения. AndAlso остановится после первого false результата - person Fabio; 22.03.2014
comment
@Fabio: Итак, вы согласны с тем, что вместо And следует использовать AndAlso? Если это так, не стесняйтесь голосовать за мой ответ. :) - person Neolisk; 22.03.2014
comment
ОК, но ваш ответ содержит некоторые синтаксические ошибки, поэтому я не могу проголосовать за него прямо сейчас, извините :) - person Fabio; 22.03.2014
comment
@Fabio: Вы можете предлагать исправления в комментариях или с помощью функции Edit. - person Neolisk; 22.03.2014