Ecco un codice che mi disturba ogni volta che ci penso.VB vs C#: perché è possibile?
Option Strict On
Module Module1
Sub Main()
For Each i As Integer In New String() {"why", "is", "this", "tolerated?"}
' compiles just fine.
Next
End Sub
End Module
C# semplicemente non permetterà la conversione di stringhe di numeri interi in modo implicito.
class Program {
static void Main(string[] args) {
foreach (int i in new string[] {"that's", "better"}) {
// will not compile, and for good reason.
}
}
}
Perché VB Facciamolo? Sto cercando di divertirmi con questo perché sono ancora relativamente nuovo qui, ma sono anche sinceramente curioso. Sono sicuro che ci sono degli sviluppatori là fuori con la risposta.
Ho incluso l'istruzione 'Option Strict' nel post e si suppone che limiti le conversioni di tipo all'ampliamento delle conversioni e impedisca la digitazione implicita, eppure continua a compilarlo. – scottyeatscode
@mellamokb, come mostrato dall'OP, funziona anche con 'Option Strict On'. – jmcilhinney
Questo è un buon punto. Secondo [questo post del blog] (http://www.owenpellegrin.com/articles/vb-net/converting-strings-to-numbers/) anche con 'Option Strict Off' non dovrebbe consentire la conversione implicita di stringhe che sono valori numerici non validi, quindi qualcos'altro deve succedere qui.** EDIT **: l'ho appena testato con LINQPad e non sembra compilare ... dove stai testando questo in cui non ottieni errori del compilatore? – mellamokb