Няма преобразуване от низ към булев тип, но получавам грешката

 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: Значи сте съгласни, че AndAlso трябва да се използва вместо And? Ако е така, не се колебайте да гласувате за моя отговор. :) - person Neolisk; 22.03.2014
comment
Добре, но отговорът ви съдържа някои синтактични грешки, така че не мога да гласувам за него в момента, съжалявам :) - person Fabio; 22.03.2014
comment
@Fabio: Вие сте повече от добре дошли да предложите корекции в коментари или като използвате функционалността Edit. - person Neolisk; 22.03.2014