Pergunta

Agora, como um programador C #, eu sei que os genéricos são impressionantes. No entanto, quando meter em alguma VB.NET, descobri que o seguinte não causa um erro do compilador:

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

Por que isso? Eu sei que você não é obrigado a lançar em VB.NET, mas eu teria pensado que este mata o principal motivo para genéricos de uso -. Tipo de segurança

Editar: Não tenho opção estrita, já que isso não era um exercício de programação real, apenas me ter um olhar para VB.NET na teoria. É uma questão teórica, como eu estava esperando-o para causar um erro do compilador, mesmo com a opção estrita off, assim como uma característica de tipos genéricos.

Foi útil?

Solução

Sem Option Strict On, VB.NET está feliz em converter implicitamente Boolean para Integer. Eu recomendo fortemente (especialmente vindo de um fundo C #) que você faça Option Strict On o padrão para o seu trabalho VB.NET.

Você pode fazer isso no Visual Studio em Tools | Options | Projects and Solutions | VB Defaults.

editar para saber mais sobre o VB (classic) 'relaxado' atitude em relação à conversão de tipo, google 'Evil Tipo coerção'. Aqueles de nós que procurou fazer um bom trabalho em VB (clássico) tive que lutar esse demônio de tempo ...

Outras dicas

Você tem Option Strict virou on?

VB.NET convertidos no site da chamada função. A lista (de Integer) ainda está a armazenar um número inteiro (-1, que é o valor inteiro de Verdadeiro)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top