VB.NET是否会自动将数值格式的String变量转换为Integer参与运算?
VB.NET数值字符串自动类型转换问题解答
你观察到的运行结果由VB.NET的隐式类型转换特性导致,核心关联项目的Option Strict配置开关:
- 默认情况下
Option Strict为关闭状态,编译器允许运行时自动尝试类型转换:当Integer类型与String类型使用+运算符时,运行时会优先尝试将字符串值隐式转换为数值类型参与算术运算。 - 若字符串内容符合数值格式(如示例中的
"323"),隐式转换成功,会正常执行加法输出结果;若字符串为非数值内容(如"some name"),转换失败就会抛出运行时异常。 - 建议生产环境开启
Option Strict,此时你的测试代码会在编译阶段直接报错,提示不允许Integer与String类型直接执行+运算,必须显式调用CInt(y)、Integer.Parse(y)等转换方法手动完成类型转换后再运算,避免隐式转换带来的不可控风险。
你提供的测试代码如果做显式转换改造,写法如下:
Sub Main() Dim x As Integer = 23 Dim y As String = "323" Console.WriteLine(x + CInt(y)) Console.ReadLine() End Sub
内容的提问来源于stack exchange,提问作者Saratchandra MV
相关产品推荐
相关产品推荐

