2

この質問は、怠惰な VB プログラマーを対象としています。お願いします。

vb で実行でき、エラーは発生しません。

例 1

Dim x As String = 5
Dim y As Integer = "5"
Dim b As Boolean = "True"

例 2

Dim a As EnumType = 4
Dim v As Integer = EnumType.EnumValue

例 3

Private Sub ButtonClick(sender As Object, e As EventArgs)
    Dim btn As Button = sender        
End Sub

例 4

Private Sub ButtonClick(sender As Button, e As EventArgs)
    Dim data As Contact = sender.Tag
End Sub

予想されるランタイム タイプが確実にわかっている場合、vb 言語の組み込みキャストに依存することは「禁止」されていますか? いつ頼れる?

4

4 に答える 4

3

使用が「禁止」されているわけではありませんOption Strict Offが、ほとんどの人が使用を強く勧めてOption Strict Onいます。

理由は、たとえばthisなどの他の質問で説明されています。

于 2010-04-12T09:42:46.950 に答える
1

MarkJ へのコメントは、OP ごとに回答に移動します

暗黙のキャストが何をしているのかについてのルールを知っていることを確認してください。とはいえ、例 4 は将来的には簡単に破れるように見えます。以前に少なくとも null チェックがあれば、もっと嬉しいでしょう。

于 2010-04-12T15:43:40.323 に答える
0

このような「怠惰な」慣行の皮肉なことに、長期的にはより多くの時間を費やすことになります。すべての状況とすべてのロケールで、入力が常に意図した型に自動的にキャストできる形式であると本当に確信できますか?

考えられるすべての影響を検討し、ほとんど避けられないバグを処理するには、変数を厳密に入力し、入力を厳密に検証し、必要に応じて明示的にキャストするよりもおそらく時間がかかります。

于 2010-04-12T18:14:32.987 に答える
0

Visual Basic 2008 を使用している場合、別のオプションとしてキャストを明示的に行い (例: Option Strict On)、Option Implicit On に依存するため、型を 2 回記述する必要はありません。

Dim x = 5.ToString()  
Dim data = DirectCast(sender.Tag, Contact)
于 2010-04-12T03:06:20.653 に答える