1

vbでは、数式の代わりにテキストボックスにあるテキストを使用できます。つまり、textbox1に50を記述し、そのコードのように記述できる場合は、次のようになります。

 Dim result As Double = TextBox1.Text + 0.4

ご覧のとおり、私はどのタイプも変換しませんでしたが、vb.netで機能します

しかし、私はこれを使用することの欠点は何であるかを知りたいですか?

(私は算術演算について話しているだけです)

4

2 に答える 2

2

内部では、VB.net はTextBox1.Text(ie CType(TextBox1.Text, Double)) の暗黙的な縮小変換を行って、それを機能させています。これは、Option Strictオフになっていることを意味します。おそらく、これを行うことの最大の欠点は、Option Strict On のベスト プラクティスに反することです。

Option Strict をオフにすることで、コンパイラが型チェックを強制できなくなります。これにより、より VB6 の方法でコーディングできます。したがって、範囲を狭める暗黙の変換が許可されます。有効にした場合は、拡大変換 (マイナスの副作用の可能性がないもの) のみが許可されます。

この特定のシナリオでは、大したことではないように見えるかもしれませんが、コードベース全体でそれをオフにしておくと、微妙なバグが忍び寄る可能性があります.

MSDN の Widening and Narrowing Conversions (Visual Basic)について読むことをお勧めします。

于 2012-04-20T18:43:11.273 に答える
1

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 が舞台裏でデータ型をキャストする方法がとても気に入っています。

于 2012-04-20T18:44:29.763 に答える