如何使用Interlocked.CompareExchange的数组项

时间:2017-10-11 19:52:01

标签: c# interlocked

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

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

我该如何做到这一点?

2 个答案:

答案 0 :(得分:1)

我正在使用它

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

一切都很好。

答案 1 :(得分:1)

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

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