2010-07-16 15 views
2

Я (новый для VB.NET) выполняю некоторое обслуживание кода для функции, которая иногда выдает исключение «преобразование ошибок в строку« False »(или« True ») для ввода Integer». То, что я нашел что-то эквивалент этойЧто делает двойное присвоение в задании VB.NET?

someVal является строка, someFun1 возвращает целое число и someFun2 принимает целое число в качестве параметра

... 
someVal = someVal = someFun1() 
... 
someFun2(someVal) 
... 

То, что я думаю, что может происходить в том, что она пытается присвоить someFun1-х возвращайте значение в someVal, затем выполните проверку bool относительно того, изменился ли какой-либо параметр, но я не думаю, что это то, что нужно сделать.

Мой вопрос - выполняет ли это двойное назначение (someVal = someVal = someFun1()) выполняет все, о чем я не знаю в VB.NET?

другое примечание: я понимаю, что существуют неявные приведения целых чисел в строку и обратно в целое число, но это не должно вызывать никаких проблем, так как значения всегда должны содержать числовое значение (которое можно неявно отбрасывать назад и вперед от Integer и String, верно?) Не верно или не верно - насколько я могу судить

ответ

5

Путаница здесь в том, что оператор equals = совпадает с оператором присваивания = в VB.NET. В C#, приведенный выше код будет эквивалентно

someVal = someVal == someFun1(); 

, где логический оператор равен == осуществляется первым, и результат вставляется в someVal. Это не удается, поскольку someVal является int, а не bool.

Другими словами, среда выполнения сравнивает someVal с возвращаемым значением someFun1(), возвращая True или False, и не в состоянии бросить, что в целое число. Это не «двойное назначение» - это просто рядный представление

If someVal = someFun1() Then 
    someVal = True 
Else 
    someVal = False 
End If 

где гораздо более очевидно, что мы пытаемся дать Integer переменной значение типа Boolean.

+0

Я только что понял, что я неправильно использовал типы переменных, но те же принципы применимы к строкам и т. Д. –

 Смежные вопросы

  • Нет связанных вопросов^_^