如何正确重置递增的计数器?

How to correctly reset an incremented counter?

在我的一个脚本中,我使用了一个计数器,如果特定事件发生,我会逐渐递增该计数器。我使用以下语法来执行此操作:

if ($IndexPositionTrue) {
    $CorrectTextbox.Text = $script:countercorrect++
}

现在我正在尝试实现一个按钮,您可以使用该按钮将 $countercorrect 值重置回 0。为此,我设置了一个带有 click_handler:

的按钮
$reset = New-Object System.Windows.Forms.Button
$reset.Add_Click($handler_reset_click)
$form1.Controls.Add($Reset)

$handler_reset_click = {
    Reset
}

function Reset {
    Clear-Variable countercorrect
}

假设 $countercorrect 值已增加到 5,我使用 Reset 函数。该值确实重置为 0,但在下一个增量之后而不是显示 1,它显示 6。

是我的语法不正确还是我 "resetting" 错误的值?

我认为这是一个范围问题,你能不能像这样修改重置函数:

function Reset {
    $script:countercorrect = 0
}

您在 If 语句中引用了 $Script:countercorrect,但在函数 reset 中引用了 $countercorrect。如果您认为您在这里使用了错误的范围。

使用函数

function Reset {
Clear-Variable countercorrect -Scope Script
}