我有VB Is运算符的不一致行为,在干净的VB2012 Windows可执行文件项目中重现,代码如下。这使我很难调试我的一些代码,这种行为是设计还是VS / JIT中的错误?
问题Sumary
在断点处,Debug输出显示 True ,但是立即窗口命令?A是B返回错误
如果我将ByRef更改为ByVal,则问题就会消失
class SettingsTableViewController:UITableViewController {
@IBOutlet var notificationsSwitch: UISwitch!
@IBAction func notificationsClicked(sender: UISwitch) {
if notificationsSwitch.on {
println("notifications on")
}else{
println("notifications off")
}
}
}
我看起来像编译器/解释器问题,有没有人见过这个?
请注意,这是我(生产代码)问题的简化。 如果我运行上面的确切代码,它在两种情况下都返回True并且工作正常,但在我的真实场景中,使用相当简单的类它会失败,如上所述。
我检查了我使用的类是否存在某种声明问题或以某种方式覆盖了Is运算符,但是没有看到任何关于我的类的奇怪。
我不知道这可能是除了核心.NET问题之外的其他问题而且非常困惑!!