如何使用 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
我熟悉如何将 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