是运算符不一致的行为

时间:2015-05-07 14:48:31

标签: vb.net

我有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问题之外的其他问题而且非常困惑!!

0 个答案:

没有答案