2012-10-02 119 views
2

我對我的C#代碼(後面的asp.net代碼)有一個奇怪的行爲。我張貼在這裏監視窗口的截圖:c#比較操作奇怪的結果

strange null comparation result

我有一個是空的對象用戶(因爲你可以看到)和比較:用戶== null,則返回錯誤。我不明白爲什麼!

這裏有人可以解釋爲什麼會發生這種情況嗎?

+1

能不能介紹一下'user.ToString()'添加監視?另外,你有權訪問聲明的'user'類型的代碼嗎? – StriplingWarrior

+1

你試過null ==用戶嗎? –

+1

你是否在用戶上重載了==運算符? http://stackoverflow.com/questions/155458/c-sharp-object-is-not-null-but-myobject-null-still-return-false –

回答

12

那麼你可以很容易地編寫自己的類,它將使這一結果:

public class Evil 
{ 
    public static bool operator ==(Evil lhs, Evil rhs) 
    { 
     return false; 
    } 

    public static bool operator !=(Evil lhs, Evil rhs) 
    { 
     return false; 
    } 
} 

我們只是猜測,此刻...但解釋症狀。

(我只是試着重寫的ToString,我不能得到所需的輸出。)

+1

我不太明白這是如何回答被問到的問題。 – Daniel

+0

@丹尼爾:這是一個什麼可以顯示給定輸出的例子。 –

+1

我認爲在'ToString()'實現中'返回null'更可能。 'return「null」'會導致引號顯示在調試器中。 – Douglas