我收到了一些非常奇怪的行爲。一個對象在同一時間顯示爲空且不爲空,並且語句正在跳過。我可能是一個白癡,但如果這是我的錯,我沒有看到它。我正在Windows 7 SP1操作系統上使用Visual Studio 2008進行構建。C#:對象是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塊中,執行到達「throw ex」語句而不執行上面創建ex對象的行。所以,ex是null,並且拋出null給我一個訪問衝突異常。
你知道這裏會發生什麼嗎?
OpcDriver類的幾個成員是來自15年前無保證,不受支持的示例庫的類的實例,它使用COM與OPC(OLE for Process Control)程序進行接口。我能想到的唯一的事情就是,在這個圖書館的某個地方,奇怪的事情正在發生,但我無法想象這是如何成爲可能的。
謝謝。
「OpcDriver」在哪裏?是否重載任何操作符? –
我認爲你嘗試了乾淨的,重新啓動VS,乾淨的生成例程?另外,我會設置一個斷點並查看觀察窗口認爲「opcDriver」是什麼。 –
你有沒有正確的.pdb和源代碼? – 2017-02-24 20:18:19