Я все еще относительно новичок в 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), где данные представляют собой байт значения 1 (поскольку значение декодируется из буфера принимаемых данных USB). Я не знаю, относится ли это к делу, но упомяну это на всякий случай.
Я хочу сравнить их в методе, в котором объявлена вторая переменная, изначально я делал это так:
if(request != currentRequest)
{
// Throw an exception
}
Это работает большую часть времени, но иногда выдается исключение, потому что два значения не равны, однако, когда я проверяю их в отладчике, они оба равны Request.GetData. Это заставило меня задуматься о том, что переменные могут быть указателями на объекты, а не на значения, поэтому я попытался также использовать ...
!request.Equals(currentRequest)
и
request.CompareTo(currentRequest)!=0
и аналогично оба они работают большую часть времени, но иногда терпят неудачу, даже если при проверке значений в отладчике они оба являются Request.GetData.
Что меня по-настоящему смутило, так это то, что он работает большую часть времени, просто иногда не работает - я ожидал, что он будет работать или не работать последовательно.
Есть идеи?