我对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时,偶尔也会失败。
让我感到困惑的是,它大部分时间都有效,只是偶尔失败 - 我希望它能够正常工作或不能正常工作。
有什么想法吗?
答案 0 :(得分:1)
不,如果变量真的属于Request
类型,那么这是值类型,使用==
应该绝对没问题。
我怀疑调试器会向您展示一些奇怪的东西。我建议您将例外情况包括request
和currentRequest
,以告诉您发生了什么。