vbでは、数式の代わりにテキストボックスにあるテキストを使用できます。つまり、textbox1に50を記述し、そのコードのように記述できる場合は、次のようになります。
Dim result As Double = TextBox1.Text + 0.4
ご覧のとおり、私はどのタイプも変換しませんでしたが、vb.netで機能します
しかし、私はこれを使用することの欠点は何であるかを知りたいですか?
(私は算術演算について話しているだけです)
内部では、VB.net はTextBox1.Text
(ie CType(TextBox1.Text, Double)
) の暗黙的な縮小変換を行って、それを機能させています。これは、Option Strict
オフになっていることを意味します。おそらく、これを行うことの最大の欠点は、Option Strict On のベスト プラクティスに反することです。
Option Strict をオフにすることで、コンパイラが型チェックを強制できなくなります。これにより、より VB6 の方法でコーディングできます。したがって、範囲を狭める暗黙の変換が許可されます。有効にした場合は、拡大変換 (マイナスの副作用の可能性がないもの) のみが許可されます。
この特定のシナリオでは、大したことではないように見えるかもしれませんが、コードベース全体でそれをオフにしておくと、微妙なバグが忍び寄る可能性があります.
MSDN の Widening and Narrowing Conversions (Visual Basic)について読むことをお勧めします。
VB.NET では、OPTION STRICT をオフにしている場合にのみ、これを回避できます。それ以外の場合は、エラーが発生します。
プログラミングでは、常にデータ型をできる限り正確にしようとする必要があります。したがって、コード行を次のように書くことができます。
Dim result as Double = Convert.ToDouble(TextBox1.Text) + 0.4
または、エラー トラップを実行することもできます。
Dim Result as Double
Try
Result = Convert.ToDouble(TextBox1.Text) + 0.4
Catch
Result = 0
End Try
TryParse など、他にも使用できるものがたくさんあります。CDbl などの VBA 関数も使用できます。
暗黙的な型変換と呼ばれるものに依存している場合、VB.NET はデータ型を変換しようとします。このアプローチの欠点は、遅延プログラミングになることです。この機会に、VB.NET をフォールト トレラントにする必要がありますが、そうでない場合はどうでしょうか。エラーを修正できるようにすると、コードが正しいデータ型を強制していないため、最終的にバグが発生する状況になります。
右 - それはパーティー ラインです。個人的には、VBA が舞台裏でデータ型をキャストする方法がとても気に入っています。