我还是比较新的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