令我惊讶的是,我无法将 CompareExcahnge 与枚举一起使用。即使 Java 也允许这样做,有没有办法修复它,或者我应该在下面的代码中尝试其他方法?很确定这是一个错误,因为我的代码看起来是正确的。
public enum State
{
Empty,
LoadingItem,
Waiting,
Busy
}
public class Exchanger
{
public State Staaate;
public int Item;
}
List<Exchanger> eliminationArray = new List<Exchanger>();
bool tryPushEliminationArray()
{
foreach (Exchanger exchanger in eliminationArray)
{
if (Interlocked.CompareExchange<State>(ref exchanger.Staaate, State.Busy, State.Busy) != State.Busy)
{
}
}
}
作为一名拥有 5 年以上经验的 C# 开发人员,我可以说,你不能简单地使用 CompareExchange 来更改 int 或 enum,这是一种耻辱。尝试创建一个具有新状态的新交换器,我知道这会占用额外的内存,但没有其他办法......