6

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

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

为什么是这样?我知道您不需要在 VB.NET 中进行强制转换,但我认为这会扼杀使用泛型的主要原因 - 类型安全。

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

4

3 回答 3

10

如果没有Option Strict On.NET,VB.NET 很乐意隐式转换BooleanInteger. 我强烈建议(尤其是来自 C# 背景的人)Option Strict On将 VB.NET 工作设为默认值。

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

编辑更多关于 VB(经典)'放松'对类型转换的态度,谷歌'Evil Type Coercion'。我们这些试图在VB(经典)中做好工作的人不得不与这个恶魔搏斗一段时间......

于 2010-02-08T14:26:09.287 回答
3

你打开了Option Strict吗?

于 2010-02-08T14:24:10.380 回答
0

VB.NET 在函数调用处进行转换。List(of Integer) 仍然存储一个整数(-1,即 True 的整数值)

于 2010-02-08T14:29:12.210 回答