无法在 CompareExchange 中使用枚举。 (枚举类型必须是引用类型才能在 CompareExchange 中使用)

问题描述 投票:0回答:1

令我惊讶的是,我无法将 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)
                {
    
                }
    
            }
        }
c# multithreading concurrency parallel-processing
1个回答
0
投票

作为一名拥有 5 年以上经验的 C# 开发人员,我可以说,你不能简单地使用 CompareExchange 来更改 int 或 enum,这是一种耻辱。尝试创建一个具有新状态的新交换器,我知道这会占用额外的内存,但没有其他办法......

© www.soinside.com 2019 - 2024. All rights reserved.