我对 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; 分配第一个变量 使用 request = (Request)data 分配第二个局部变量 request,其中 data 是值为 1 的字节(因为该值是从正在接收的 USB 数据的缓冲区中解码的)。我不知道这是否相关,但以防万一。
我想在声明第二个变量的方法中比较它们,我最初是这样做的:
if(request != currentRequest)
{
// Throw an exception
}
这在大多数情况下都有效,但偶尔会抛出异常,因为这两个值不相等,但是当我在调试器中检查它们时,它们都等于 Request.GetData。这让我想到变量可能是指向对象而不是值的指针,所以我也尝试使用......
!request.Equals(currentRequest)
和
request.CompareTo(currentRequest)!=0
同样,这两种方法大部分时间都有效,但偶尔会失败,即使在调试器中检查这些值时它们都是 Request.GetData。
真正让我感到困惑的是,它在大多数情况下都能正常工作,只是偶尔会失败——我希望它要么正常工作,要么不能始终如一地工作。
有任何想法吗?