我還是比較新的C#和答案,這可能是很明顯的,但我在努力解決這個問題變量比較的問題
我已經定義了一個枚舉如下:
enum Request {
None = 0,
GetData,
SendData,
some other values...
};
我然後有兩個變量都定義爲類型請求如下
Request currentRequest; // This is a class member variable
Request request; // This is a local variable within a method.
第一變量被使用分配currentRequest = Request.GetData; 第二局部變量請求是使用請求=(請求)的數據,其中數據是值1字節(作爲值被從USB數據的緩衝器被接收的解碼)來分配。我不知道這是否相關,但提及它以防萬一。
我想他們其中第二變量聲明的方法中比較,我本來是這樣的:
if(request != currentRequest)
{
// Throw an exception
}
這工作的大部分時間,但occaisionally拋出異常,因爲這兩個值不等於,但是當我在調試器中檢查它們時,它們都等於Request.GetData。這讓我思考這兩個變量可能指向對象的指針,而不是價值,所以我嘗試使用也...
!request.Equals(currentRequest)
和
request.CompareTo(currentRequest)!=0
,同樣這兩種工作的大部分時間,但occaisionally即使在調試器中檢查這些值時它們都失敗,它們都是Request.GetData。
什麼是真正讓我感到困惑的是,它的作品大部分時間,卻偏偏沒有occaisionally - 我希望它工作或不工作始終。
任何想法?
枚舉是整數,比較絕對不是竊聽 - 你是如何得到的請求,並currentRequest值是多少? – harold
它們不能是'=='的唯一方法是'比較'盒裝實例時,這裏不是這種情況。 – leppie
你確定在你的代碼中沒有請求和currentRequest的裝箱/拆箱操作嗎? – Vasya