变量比较问题

时间:2011-09-28 11:54:58

标签: c# .net comparison-operators

我对C#还是比较新的,对此的答案可能很明显,但我很难解决它

我的枚举定义如下:

enum Request {
    None = 0,
    GetData,
    SendData,
    some other values...
};

然后我将两个变量定义为类型Request,如下所示

Request currentRequest; // This is a class member variable
Request request; // This is a local variable within a method.

使用currentRequest = Request.GetData分配第一个变量; 使用request =(Request)数据分配第二局部变量请求,其中数据是值为1的字节(因为该值是从正在接收的USB数据的缓冲器中解码的)。我不知道这是否相关,但请注意以防万一。

我想在声明第二个变量的方法中比较它们,我原来是这样做的:

if(request != currentRequest)
{
    // Throw an exception
}

这大部分时间都可以工作,但偶然会抛出异常,因为这两个值不相等,但是当我在调试器中检查它们时它们都等于Request.GetData。这让我觉得变量可能是指向对象而不是值的指针,所以我也尝试使用...

!request.Equals(currentRequest)

request.CompareTo(currentRequest)!=0

并且类似地,这两者在大多数情况下都工作,但是即使在调试器中检查了值,它们都是Request.GetData时,偶尔也会失败。

让我感到困惑的是,它大部分时间都有效,只是偶尔失败 - 我希望它能够正常工作或不能正常工作。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

不,如果变量真的属于Request类型,那么这是类型,使用==应该绝对没问题。

我怀疑调试器会向您展示一些奇怪的东西。我建议您将例外情况包括requestcurrentRequest,以告诉您发生了什么。