fro*_*die 3 vb.net recursion initialization default-value
我在我的代码中犯了一个有趣的错误:
Dim endColumn As Integer = startColumn + endColumn - 1
Run Code Online (Sandbox Code Playgroud)
该代码实际上应该是:
Dim endColumn As Integer = startColumn + numColumns - 1
Run Code Online (Sandbox Code Playgroud)
有趣的是,我认为这段代码应该是递归的并且无限循环,因为endColumn类型的初始化调用本身.但是,似乎代码只是将未初始化的变量视为0,所以我得到了startColumn + 0 - 1
.幕后发生了什么?变量何时被赋予默认值?
变量未初始化.
执行步骤1: Dim endColumn As Integer
an的默认值为Integer
0,因此此时endColumn = 0.
执行步骤2: startColumn + endColumn - 1
由于步骤1中的endColumn = 0,因此这是使用的值.