这句话对我来说似乎不对(特别是考虑到两种语言都使用相同的框架库作为他们的类型),我这样建议,也许他对选项Strict或Option Infer打开/关闭的选项感到困惑.
与此同时,我知道VB.NET会出现类型强制的情况 – 偶尔导致意外结果(虽然我也无法回想起在什么条件下) – (实际上我想我只是记得它主要是在执行算术运算时使用不同的类型 – 而其他语言将迫使您明确(?)).
那么有人可以澄清一下,VB.NET是否会以某种方式更弱地输入C#,如果是这样,你能举例吗?
解决方法
类型系统有很多功能,不同的人说是“强类型”和“弱类型”.例如,有些人说“强类型”意味着“每个对象在运行时都知道自己的类型”.有人说“强类型”意味着编译器知道每个变量和表达式的确切类型.有人说这意味着编译器在每个变量和表达式上都有不精确的类型边界.等等.类型系统的每个功能都可以算作“强”的点.
我说放弃整个毫无根据的“强”和“弱”打字概念,并谈谈你的意思.
C#和VB类型系统之间的差异很小,特别是因为向C#4.0添加了“动态”. C#和VB都使用CLR类型系统,其中每个对象都知道自己的类型,并且运行时检测到非法类型转换(在代码运行时或通过验证程序时)并转换为异常.两者都具有类的单继承和接口的多继承.两者都区分了值类型和引用类型.等等.
C#和VB类型系统之间的主要区别在于VB支持可选地拨打编译时静态类型检查,并将类型检查推迟到运行时,更像是动态类型语言.当与为动态类型系统设计的对象模型进行互操作时,这非常方便.我们为C#4.0添加了一个类似的功能,但是为了保持C#4.0对静态类型的历史支持,该功能基于将某些表达式静态键入为“动态”,然后通过在运行时再次启动类型分析器来解决并对活动对象进行类型分析.
http://ericlippert.com/2012/10/15/is-c-a-strongly-typed-or-a-weakly-typed-language/