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!