あなたのルーチンで改善できるいくつかのことがあります。まず第一に、比較は次のようになります。任意の符号なし整数は常にtrueと評価されますので、あなたはIf a = 6 or 7 or 8 ...
前にそれをやっていた
If a = 6 Or a = 7 Or a = 8 Or a = 9 Or a = 10 Or a = 11 Or a = 12 Then
方法は、動作しません。その結果、コードは常にb = true
になりました。なぜなら、Visual Basicはブール値をデフォルトでfalseに初期化し、check
には何も割り当てないので、check = false
には常にfalseが返されていたからです。
一方、私は参照によって値を渡す代わりに関数を作成します。関数は必要な計算をすべて行い、値を返します。完全なコードは以下のようになります。
Function salomonsize(ByVal a As Integer) As Boolean
If a = 6 Or a = 7 Or a = 8 Or a = 9 Or a = 10 Or a = 11 Or a = 12 Then
Return True
Else
Return False
End If
End Function
Private Sub btnCompute_Click(sender As Object, e As EventArgs) Handles btnCompute.Click
Dim check = salomonsize(txtSalomonSize.Text)
If check = False Then
MsgBox("Wrong size")
Exit Sub
End If
End Sub
あなたがそれをやっていた方法で、あなたはb = true
とb = false
を割り当てました。 check
を後でチェックする値であるため、代わりにtrueまたはfalseにすることを意味していると思います。
編集:これを行うと、非常に多くの比較は、配列を使用することになり回避するためのより良い方法:
Function salomonsize(ByVal a As Integer) As Boolean
Dim ValidNumbers As Integer() = {6, 7, 8, 9, 10, 11, 12}
If ValidNumbers.Contains(a) Then
Return True
Else
Return False
End If
End Function
あなたが見ることができるようにあなたがそれ以上の数字を追加する必要がある場合、あなたは、単にに追加配列。必要に応じてファイルから読み込むことさえできます。次に、.Contains
関数を使用して値を比較します。 Return ValidNumbers.Contains(a)
を単純に実行して、完全にIf/Elseを避けることもできます。
Function salomonsize(ByVal a As Integer) As Boolean
Dim ValidNumbers As Integer() = {6, 7, 8, 9, 10, 11, 12}
return ValidNumbers.Contains(a)
End Function
Wow!迅速な入力をありがとうございました!私はかなりの時間この周りで遊んでいたので、役に立つ。もし私が高い評価を受けていたら、私は投票をしようと思いますが、私が積み重ねているように、このような役に立つ人たちをここに見てうれしいです。再度、感謝します! – DodgerT
@DodgerT助けてくれてうれしいです。 –