난 아직 C#을 비교적 새로운 해요 및 이에 대한 대답은 아마 매우 명백하지만, 다음과 같이 내가 열거가 정의한 그것을변수 비교 문제
를 해결하기 위해 사투를 벌인거야 :
enum Request {
None = 0,
GetData,
SendData,
some other values...
};
I는 두 요청 타입으로 정의 제 1 가변 사용 할당
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
}
이 대부분의 시간을 작동하지만, occaisionally를 제외하고는이 때문에 발생합니다 값은 동일하지 않지만 디버거에서 확인하면 Request.GetData와 같습니다. 이 날은 유사 ... 변수 오히려 내가 사용도 시도 있도록 값보다 객체에 대한 포인터가 될 수 있음을이 두 가지를
!request.Equals(currentRequest)
및
request.CompareTo(currentRequest)!=0
및
생각을 가지고 대부분의 시간을 작동하지만 occaisionally 디버거에서 값을 확인한 경우에도 모두 Request.GetData입니다.나를 혼란스럽게하는 것은 그것이 대부분의 시간 동안 작동한다는 것입니다. 단지 occaisionally 실패합니다 - 나는 그것이 작동하거나 계속 작동하지 않을 것이라고 기대합니다.
아이디어가 있으십니까? 변수가 진정으로 입력 한 다음 Request
의 경우
enums가 정수이고 비교가 확실히 도청되지 않습니다. request 및 currentRequest 값을 어떻게 얻고 있습니까? – harold
'=='이 될 수없는 유일한 방법은 여기에 해당하지 않는 박스형 인스턴스를'비교 '하는 경우입니다. – leppie
당신은 귀하의 코드에서 요청 및 currentRequest와 함께 boxing/unboxing 작업을 수행하지 않았습니까? – Vasya