私は非常に奇妙な動作をしています。オブジェクトは同時にNULLでなく、nullではないように見え、ステートメントはスキップされます。私はおそらく馬鹿だが、それが私のせいだと私はそれを見ない。私はWindows 7 SP1 OSでVisual Studio 2008を使ってビルドしています。C#:オブジェクトはnullで、nullではありません
public void ReadTrendData(OpcDriver opcDriver)
{
if (opcDriver != null)
{
int a = 1;
}
if (opcDriver == null)
{
Exception ex = new Exception("Null OPC driver received by ReadTrendData()");
throw ex;
}
opcDriverオブジェクトが正常に作成され、このメソッドに渡されます。私がステップスルーすると、 "int a = 1"ステートメントが実行されます。次に、次のifブロックで、exオブジェクトを作成する上の行を実行せずに "throw ex"文に実行が移ります。したがって、exはnullで、nullを投げるとアクセス違反の例外が発生します。
ここで何が起こっている可能性がありますか?
OpcDriverクラスのいくつかのメンバーは、COMを使用してOPC(OLE for Process Control)プログラムとインターフェイスする、サポートされていない15年前のサンプルライブラリのクラスのインスタンスです。私が考えることができるのは、そのライブラリの腸のどこかにグロテスクが起こっているということだけですが、どうすればこのことが可能か考えられません。
ありがとうございます。
OpcDriverはどこですか? - それはどの演算子にもオーバーロードされていますか? –
私はきれいな、再起動したVS、クリーンビルドルーチンを試したとしますか?また、私はブレークポイントを設定し、ウォッチウィンドウが 'opcDriver'と考えるものを見ています。 –
正しい.pdbとソースコードがありますか? –