VB.NET中的泛型

Fio*_*ite 6 vb.net compiler-construction generics type-safety

现在,作为一名C#程序员,我知道泛型很棒.但是,当涉及到某些VB.NET时,我发现以下内容不会导致编译器错误:

Dim instance As List(Of Integer)
instance.Add(True)
Run Code Online (Sandbox Code Playgroud)

为什么是这样?我知道你不需要使用VB.NET,但我认为这会杀死使用泛型的主要原因 - 类型安全.

编辑:我没有严格的选项,因为这不是一个真正的编程练习,只是我在理论上看一下VB.NET.这是一个理论问题,因为我期望它甚至在选项严格关闭时导致编译器错误,就像泛型类型的一个特性一样.

Aak*_*shM 10

没有Option Strict On,VB.NET很乐意隐式转换BooleanInteger.我强烈建议您(尤其是来自C#背景)Option Strict On为VB.NET工作做出默认设置.

您可以在Tools| 中的Visual Studio中执行此操作 Options| Projects and Solutions| VB Defaults.

编辑更多关于VB(经典)'轻松'的类型转换态度,谷歌'邪恶类型强制'.我们这些想要在VB(经典)中做好工作的人不得不摔跤这个恶魔......