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

Array.IsReadOnly Property ใน C# ทำหน้าที่อะไร

Array.IsReadOnly Property คืนค่า bool บอกว่า Array เป็น Read-Only หรือไม่

  • true = อ่านอย่างเดียว ไม่สามารถแก้ไขได้
  • false = อ่าน/เขียนได้ (ปกติ)

ตัวอย่าง

using System;

class Program
{
    static void Main()
    {
        // สร้าง Array ผ่าน Array.CreateInstance
        Array arr = Array.CreateInstance(typeof(string), 3);
        arr.SetValue("Electronics", 0);
        arr.SetValue("Clothing", 1);
        arr.SetValue("Appliances", 2);
        
        Console.WriteLine("Lower Bound: " + arr.GetLowerBound(0));
        Console.WriteLine("IsReadOnly: " + arr.IsReadOnly);
        
        // Array ทั่วไป IsReadOnly = false
        int[] normalArray = { 1, 2, 3 };
        Console.WriteLine("Normal Array IsReadOnly: " + normalArray.IsReadOnly); // False
    }
}

ผลลัพธ์

Lower Bound: 0
IsReadOnly: False
Normal Array IsReadOnly: False

เมื่อไหร่ IsReadOnly = true?

  • Array ที่สร้างจาก Array.CreateInstance แบบ Fixed-size (ค่าเริ่มต้น False)
  • Array ที่ Return จากบาง API (เช่น GetValues() ของ Enum)
  • Fixed-size Array ใน Struct (ไม่พบบ่อย)

ReadOnlyCollection<T> (ทางเลือกที่ดีกว่า)

using System.Collections.ObjectModel;

var list = new List<int> { 1, 2, 3 };
var readOnly = new ReadOnlyCollection<int>(list);
// readOnly.Add(4); // Compile Error!