簡體   English   中英

C#:Object既為null又不為null

[英]C#: Object is both null and not null

我有一些非常奇怪的行為。 對象似乎為null且不是同時為null,並且語句將被跳過。 我可能是個白痴,但如果這是我的錯,我就不會看到它。 我正在Windows 7 SP1操作系統上使用Visual Studio 2008構建。

    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)程序進行交互。 我唯一能想到的是,在那個圖書館的某個地方發生了一些奇怪的事情,但我想不出這是怎么可能的。

謝謝。

你應該嘗試更新的visual studio構建。 我在2008和2012版本上遇到了幾乎相同的問題。 這是一個visual studio編譯時錯誤。 您應檢查構建選項,如果選擇“釋放”模式,則應檢查調試並重試。

總而言之,問題的根源可能是錯誤的運算符重載(==和/或!=)。 測試if (Object.ReferenceEquals(opcDriver, null))按預期工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM