Domanda

Ora, come un programmatore C #, so che i generici sono impressionanti. Tuttavia, quando dilettarsi in qualche VB.NET, ho scoperto che il seguente non causa un errore di compilazione:

Dim instance As List(Of Integer)
instance.Add(True)

Perché è questo? So che non sono tenuti a gettare in VB.NET, ma avrei pensato che questo uccide la ragione principale per utilizzare farmaci generici -. La sicurezza di tipo

Modifica non ho l'opzione rigoroso su, come questo non era un vero e proprio esercizio di programmazione, solo a me avere uno sguardo a VB.NET in teoria. Si tratta di una questione teorica, come mi aspettavo che a causare un errore di compilazione, anche con l'opzione rigorosa fuori, proprio come una caratteristica di tipi generici.

È stato utile?

Soluzione

Senza Option Strict On, VB.NET è felice di convertire implicitamente Boolean a Integer. Consiglio vivamente (soprattutto provenienti da un background C #) che si fanno Option Strict On il valore di default per il vostro lavoro VB.NET.

È possibile farlo in Visual Studio in Tools | Options | Projects and Solutions | VB Defaults.

modifica per maggiori informazioni su VB (classico) atteggiamento 'rilassato' al tipo di conversione, google 'Male Tipo coercizione'. Quelli di noi che hanno cercato di fare un buon lavoro in VB (classico) ha dovuto lottare per questo demone, mentre ...

Altri suggerimenti

Hai Option Strict trasformato on?

VB.NET converte al sito di funzione di chiamata. La Lista (di intero) è ancora memorizzando un numero intero (-1, che è il valore intero True)

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