Private Sub btnConvert_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles btnConvert.Click
Dim result As Decimal
result = Calc(txtGrams.Text) & Calcul(txtTroyOunces.Text)
MessageBox.Show(result)
End Sub
Private Function Calc(ByVal a As Decimal) As Decimal
' declare variables and convert to decimal
Dim Grams As Decimal
a = txtGrams.Text
Grams = a * 31.1035
' determine if text boxes txtGrams and txtTroyOunces is empty
If String.IsNullOrEmpty(a) Then
MessageBox.Show("Please enter a number")
Else
Return Calc(Grams)
End If
#Disable Warning BC42353 ' Function doesn't return a value on all code paths
End Function
#Enable Warning BC42353 ' Function doesn't return a value on all code paths
Private Function Calcul(ByVal b As Decimal) As Decimal
Dim Ounces As Decimal
b = txtTroyOunces.Text
Ounces = b * 0.911458
If String.IsNullOrEmpty(b) Then
MessageBox.Show("Please enter a number")
Else
Return (Ounces)
End If
#Disable Warning BC42353 ' Function doesn't return a value on all code paths
End Function
#Enable Warning BC42353 ' Function doesn't return a value on all code paths
を掛けているときに、2つのテキストボックスの答えを表示するボタンの機能を作成しようと、私はこのエラーを取得する:私は私の変換ボタンをクリックすると、ユーザー入力が
$exception {"Exception of type 'System.StackOverflowException' was thrown."} System.StackOverflowException
'Calc(Grams)'は 'Calc()'の内部にあるので、再びCalc()を無限に呼び出します。おそらくあなたは 'Return Grams'をほしいと思うでしょうか?それらを使用した後の引数*の妥当性もチェックしています。これらの警告を抑止するのではなく、修正することをお勧めします。 –
警告を無効にするのではなく、失敗したときに0を返さないのはなぜですか?もし何も返さなければ、とにかく返されるものです。しかし、あなた自身でそれをすることで、少なくともその警告はなくなります。 –