C#中的数组类Array.SyncRoot属性有什么作用?


Array.SyncRoot 属性用于获取一个对象,该对象可用来同步对 Array 的访问。具有数组的类还可以使用 SyncRoot 属性来实现它们自己的同步。

遍历集合不是一个线程安全的过程。即使集合已同步,其他线程也可能修改该集合。这最终会导致枚举器引发异常。为此,你需要锁定集合。

让我们看一个使用 Array.SyncRoot 属性的示例 -

示例

 实际演示

using System;
using System.Collections.Generic;
using System.Linq;

class Program {
   static void Main() {
      Array arr = new int[] { 23, 11, 32, 18, 87 };
      lock(arr.SyncRoot) {
         foreach (Object val in arr)
         Console.WriteLine(val);
      }
   }
}

输出

23
11
32
18
87

上面,我们在数组上设置了一个锁 -

lock(arr.SyncRoot)

更新于:2020 年 6 月 20 日

282 次浏览

开启你的职业生涯

完成课程认证

开始
广告