C#:Object既为null又不为null

时间:2017-02-24 20:14:36

标签: c#

我得到了一些非常奇怪的行为。对象似乎为null且不是同时为null,并且语句将被跳过。我可能是个白痴,但如果这是我的错,我就不会看到它。我在Windows 7 SP1操作系统上使用Visual Studio 2008进行构建。

to_date('022417', 'MMDDYY')

成功创建opcDriver对象并将其传递给此方法。当我单步执行时," int a = 1"声明被执行。然后,在下一个if块中,执行进入"抛出ex"语句不执行上面创建ex对象的行。所以,ex为null并且抛出null会给我一个访问冲突异常。

你知道这里会发生什么吗?

OpcDriver类的几个成员是来自15岁未使用的,不受支持的示例库的类的实例,该库使用COM与OPC(用于过程控制的OLE)程序进行交互。我唯一能想到的是,在那个图书馆的某个地方发生了一些奇怪的事情,但我无法想象这是怎么可能的。

谢谢。

2 个答案:

答案 0 :(得分:0)

你应该尝试更新的visual studio构建。我在2008和2012版本上遇到了几乎相同的问题。这是一个visual studio编译时错误。你应该检查你的构建选项,如果你选择了“发布”模式,你应该回来调试再试一次。

答案 1 :(得分:0)

总而言之,问题的根源可能是错误的运算符重载(==和/或!=)。考试 if (Object.ReferenceEquals(opcDriver, null)) 按预期工作。