Question

Maintenant, en tant que programmeur C #, je sais que les médicaments génériques sont impressionnants. Cependant, quand barboter dans certains VB.NET, j'ai découvert que ce qui suit ne provoque pas une erreur du compilateur:

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

Pourquoi est-ce? Je sais que vous n'êtes pas obligé de jeter dans VB.NET, mais je l'aurais pensé que cela tue la principale raison d'utiliser les médicaments génériques -. La sécurité de type

Modifier Je n'ai pas l'option stricte, car cela n'a pas été un véritable exercice de programmation, me avoir un regard sur VB.NET en théorie. Il est une question théorique, comme je l'attendais à provoquer une erreur du compilateur, même avec l'option hors stricte, comme une caractéristique de types génériques.

Était-ce utile?

La solution

Sans Option Strict On, VB.NET est heureux de convertir implicitement Boolean à Integer. Je recommande vivement (surtout venant d'un arrière-plan C #) que vous faites Option Strict On la valeur par défaut pour votre travail VB.NET.

Vous pouvez le faire dans Visual Studio à Tools | Options | Projects and Solutions | VB Defaults.

modifier pour en savoir plus sur le VB (classique) attitude détendue »pour une conversion de type, google 'Mauvais type Coercion'. Ceux d'entre nous qui ont cherché à faire du bon travail en VB (classique) ont dû battre ce démon pour en ...

Autres conseils

Avez-vous Option Strict tournée sur?

VB.NET convertit au site d'appel de fonction. La liste (de Integer) stocke toujours un nombre entier (1, ce qui est la valeur entière de True)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top