如何使用 Interlocked.CompareExchange 的数组项

How can I use an array item with Interlocked.CompareExchange

我熟悉如何将 Interlocked.CompareExchange() 用于普通对象。但是我想将它与数组成员一起使用:

string[] myArray = new string[] { "A", "B", "C" }; 
string myStr = (string) Interlocked.CompareExchange(ref myArray[0], null, myArray[0]); 
// myArray[0] == null

我怎样才能做到这一点?

我是这样用的

string[] myArray = new string[] { "A", "B", "C" };
        string myStr = Interlocked.CompareExchange(ref myArray[0], "F", myArray[0]);
        foreach (var item in myArray)
        {
            Console.WriteLine(item.ToString());
        }

这是输出

F B C

一切都很好。

我没有看到问题。您正在将数组中的第一个字符串设置为空。这就是为什么它为空。这是你如何使用它:

string[] myArray = new string[] { "A", "B", "C" }; 
string myStr = Interlocked.CompareExchange(ref myArray[0], "ASDF" /* VALUE */, 
myArray[0]); 
//myArray[0] == "ASDF"    <- VALUE YOU SET