Domanda

La domanda è destinata ai programmatori Lazy VB. Per favore.

In VB posso fare e non riceverò errori.

Esempio 1

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

Esempio 2

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

Esempio 3

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

Esempio 4

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

Se sicuramente conosco il tipo di runtime previsto, è "proibito" fare affidamento sul casting incorporato in lingua VB? Quando posso fare affidamento?

È stato utile?

Soluzione

Commento a Markj Muoversi per rispondere per op

Sentiti libero di fare affidamento su tutto ciò che vuoi, assicurati solo di conoscere le regole per quello che sta facendo il cast implicito. Detto questo, l'esempio n. 4 sembra davvero facile da rompere in futuro, sarei molto più felice se ci fosse almeno un controllo nullo prima.

Altri suggerimenti

Certamente non è "proibito" usare Option Strict Off Ma quasi tutti consigliano vivamente di usare Option Strict On.

Le ragioni sono spiegate in altre domande, ad esempio questo.

Se stai usando Visual Basic 2008, un'altra opzione è fare l'esplicitaly di casting (ad es. Opzione rigorosa) e fare affidamento sull'opzione implicita, quindi non è necessario scrivere il tipo due volte.

Dim x = 5.ToString()  
Dim data = DirectCast(sender.Tag, Contact)

L'ironia delle pratiche "pigre" come questa è che spesso finiscono per costarti più tempo a lungo termine. Puoi davvero essere assolutamente certo che i tuoi input saranno sempre in un formato che può essere automaticamente lanciato sul tipo previsto, in tutte le circostanze e in tutti i locali?

Pensare attraverso tutte le possibili implicazioni e gestire i bug quasi inevitabili, probabilmente impiegherà più tempo alla semplice digitazione delle tue variabili, convalidando rigorosamente i tuoi input e lancia esplicitamente dove necessario.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top