В Visual Studio 2017 Visual Basic я получаю ожидаемую ошибку конца оператора

В следующем коде я получаю ошибки «Ожидается конец оператора» и «Текст не является членом строки»:

Public Class Form1
    Private Sub btnFtoC_Click(sender As Object, e As EventArgs) Handles btnFtoC.Click
        Try
            Dim f As Decimal CDec(txtF.Text)
            Dim c As Decimal
            Dim txtC As String

            c = 5 / 9 * (f - 32)
            txtC.Text = CStr(c)

        Catch ex As Exception

        End Try
    End Sub
End Class

person Paolo Barone    schedule 05.02.2020    source источник
comment
Открытый класс Form1 Private Sub btnFtoC_Click(sender As Object, e As EventArgs) Обрабатывает btnFtoC.Click Try Dim f As Decimal CDec(txtF.Text) Dim c As Decimal Dim txtC As String c = 5 / 9 * (f - 32) txtC .Text = CStr(c) Catch ex As Exception End Try End Sub End Class   -  person Paolo Barone    schedule 06.02.2020
comment
Вы работаете с температурой, поэтому используйте Double (научные значения), а не Decimal (денежные значения).   -  person Enigmativity    schedule 04.06.2020
comment
Кроме того, научитесь никогда не писать Catch ex As Exception. Вы должны когда-либо перехватывать только определенные исключения, из которых вы не можете кодировать свой выход, и которые вы можете осмысленно обрабатывать. Вам следует редко писать обработчик исключений. Слишком много людей используют их слишком часто, и в результате они просто создают ошибочный код.   -  person Enigmativity    schedule 04.06.2020
comment
Попробуйте Dim f As Decimal = CDec(txtF.Text)   -  person Enigmativity    schedule 04.06.2020
comment
Кроме того, убедитесь, что у вас есть Option Strict On и Option Explicit On при написании кода в VB.NET. Они сделают вас лучшим кодером.   -  person Enigmativity    schedule 04.06.2020


Ответы (2)


Вы объявили txtC как String, используя Dim txtC As String, поэтому txtC.Text нет. (Возможно, вы собирались заполнить текстовое поле?)

person Morpheus    schedule 06.02.2020

Я предполагаю, что txtF и txtC являются текстовыми полями. Вам нужно проверить ввод в txtF, ​​чтобы увидеть, является ли он допустимым Decimal.

Private Sub btnFtoC_Click(sender As Object, e As EventArgs) Handles btnFtoC.Click
    Dim f As Decimal
    If Not Decimal.TryParse(txtF.Text, f) Then
        MessageBox.Show("Please enter a valid number")
        Return
    End If
    Dim c = CDec(5 / 9 * (f - 32))
    txtC.Text = CStr(c)
End Sub
person Mary    schedule 03.06.2020