Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

คุณสมบัติ Array.IsSynchronized ใน C#

คุณสมบัติ Array.IsSynchronized ใน C#

Array.IsSynchronized เป็น Property ที่คืนค่า bool แสดงว่าการเข้าถึงอาร์เรย์มีการซิงโครไนซ์ (Thread-safe) หรือไม่ โดยอาร์เรย์มาตรฐานใน C# ไม่ได้ Synchronized โดยค่าเริ่มต้น (คืนค่า false)

ไวยากรณ์

public bool IsSynchronized { get; }

ตัวอย่างการใช้งาน

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

class Program
{
    static void Main()
    {
        Array arr = new int[] { 2, 1, 9, 4, 8, 6, 8 };
        
        Console.WriteLine("IsSynchronized: " + arr.IsSynchronized); // False
        
        // แม้ IsSynchronized จะเป็น false ยังต้อง Lock ผ่าน SyncRoot เมื่อ Enumerate
        lock (arr.SyncRoot)
        {
            foreach (object val in arr)
                Console.WriteLine(val);
        }
    }
}

ผลลัพธ์

IsSynchronized: False
2
1
9
4
8
6
8

จุดสำคัญ

  • IsSynchronized มีเพื่อ Implement Interface ICollection เท่านั้น
  • อาร์เรย์ทั่วไป ไม่ Thread-safe ต้อง Lock เองผ่าน SyncRoot
  • คลาสที่ Wrap อาร์เรย์สามารถ Implement Synchronization เองได้โดยใช้ SyncRoot
  • แนะนำให้ใช้ Concurrent Collections (ConcurrentBag, ConcurrentQueue, ConcurrentDictionary) ใน .NET ใหม่ๆ แทน