vb.net - 循环中的局部字符串变量初始化
问题描述
我在使用 vb.net(框架 4.8、VS2019Option Explicit
和)和循环Strict
On
内的字符串变量时遇到了奇怪的行为。For Each
为什么tmpVal
变量没有在每个循环中重新初始化,或者我可能错过了什么?
这是我的代码:
Sub Main()
Dim Props() As String = {"one", "two", "three"}
For Each cProp As String In Props
Dim tmpVal As String
If cProp = "two" Then
If String.IsNullOrEmpty(tmpVal) Then
tmpVal = cProp
Else
tmpVal = "Nope"
End If
End If
Console.WriteLine("cProp " & cProp & " : " & tmpVal)
Next
Console.ReadKey()
End Sub
和我得到的输出:
cProp one :
cProp two : two
cProp three : two
我期待第三行是“空的”
谢谢
解决方案
在循环中声明一个变量并不意味着它将在每次迭代时被初始化。
它只是将范围限制在循环中。
意味着它将Nothing
在您的示例中初始化一次。
您可以按如下方式更改初始化以获得预期的结果:
Dim tmpVal As String = ""
推荐阅读
- javascript - 创建客户端Javascript库
- c++ - C++ Qt QPixmap 加载总是返回 false
- angular - 如何更改Angular Material中数据表标题中排序箭头的颜色?
- node.js - 尝试从 git hub node.js 版本 v6.10.0 安装 MERN-Social-Network
- java - 从现有的 jhipster 生成的应用程序重构为 Spring Boot 应用程序
- javafx - Netbeans 9 0 Java FX 10
- scala - Spark:列表或列表缓冲区
- ios - 重复本地通知会删除先前待处理的本地通知
- c# - 如何为要在 ASP.net 核心中下载的文件创建可下载文件链接
- swift - Post A Json object as parameter value in Swift 4 ios using Alamofire