我希望有人可以澄清我在这里做错了什么。我正在尝试制作一个带有2个标签的表格 - 摄氏和华氏,2个相应的教科书,用于数值和1个按钮 - 转换显示摄氏度到华氏度的转换。我使用的以下代码一直让我遇到Strict Options错误,2对于Option Strict On禁止来自' Object'的隐式转换。到' String'和Option Strict On 2禁止从' String'隐式转换到' Double'我似乎无法找到满足严格选择的方法。
Private Sub btnConvert_Click(sender As Object, e As EventArgs) Handles btnConvert.Click
Dim celsius As String
Dim answer As String
Dim fahrenheit As String
celsius = txtCelsius.Text
fahrenheit = txtFahrenheit.Text
If String.IsNullOrEmpty(txtFahrenheit.Text) Then
answer = celsius * 9 / 5 + 32
txtFahrenheit.Text = Int(answer)
End If
If String.IsNullOrEmpty(txtCelsius.Text) Then
answer = (fahrenheit - 32) * 5 / 9
txtCelsius.Text = Int(answer)
答案 0 :(得分:0)
您有许多可以修复/明确的隐式转换:
您在celsius * 9 / 5 + 32
和(fahrenheit - 32) * 5 / 9
中进行了隐式转换。
celcius
和farhenheit
是字符串,但您将其用作数字。
当您将结果放入答案时,您也有:
answer = celsius * 9 / 5 + 32
answer
是一个字符串,但您要分配计算结果。它应该是一个双重或类似的数据类型而不是字符串。
然后将Int(answer)
放入文本字段。
第一个answer
仍然是一个字符串,但如果我没记错的话Int()
需要一个数字(双精度)。然后你获取结果并自动放入一个字符串:
txtCelsius.Text = Int(answer)
答案 1 :(得分:0)
使用 Option Strict On
您需要自己进行转换
我已编辑过你的代码,试试这个
Dim celsius As String
Dim answer As String
Dim fahrenheit As String
celsius = txtCelsius.Text
fahrenheit = txtFahrenheit.Text
If String.IsNullOrEmpty(txtFahrenheit.Text) Then
answer = CStr(CDbl(celsius) * 9 / 5 + 32)
txtFahrenheit.Text = answer
End If
If String.IsNullOrEmpty(txtCelsius.Text) Then
answer = CStr((CDbl(fahrenheit) - 32) * 5 / 9)
txtCelsius.Text = answer
End If