C# ArrayList - ReadOnly() 方法
C# ArrayList ReadOnly() 方法用于为现有 ArrayList 创建只读包装器。
此方法通过确保元素无法添加、删除或修改,使 ArrayList 不可变。此方法的复杂度为 O(n)。
语法
以下是 C# ArrayList ReadOnly() 方法的语法 -
public static ArrayList ReadOnly (ArrayList list);
参数
此方法接受一个需要包装为只读的 ArrayList。
返回值
此方法返回一个只读的 ArrayList 包装器,以防止修改。
示例 1:演示 ReadOnly() 方法的使用
以下是 ReadOnly() 方法的基本示例,用于演示如何使用它 -
using System;
using System.Collections;
class Example {
public static void Main() {
// 创建并初始化新的 ArrayList
ArrayList mylist = new ArrayList {1, 2, 3, 4, 5};
// 创建只读包装器
ArrayList readonlList = ArrayList.ReadOnly(mylist);
// 显示元素
Console.WriteLine("Read Only List: ");
foreach(var items in readonlList)
Console.Write(items + " ");
}
}
输出
以下是输出 -
Read Only List: 1 2 3 4 5
示例 2:在 C# 中修改只读 ArrayList
在此示例中,我们创建一个 ArrayList。然后使用 ReadOnly() 方法将其包装为只读。之后,我们尝试进行修改 -
using System;
using System.Collections;
class Example {
public static void Main() {
// 创建并初始化新的 ArrayList
ArrayList mylist = new ArrayList {1, 2, 3, 4, 5};
// 创建只读包装器
ArrayList readonlList = ArrayList.ReadOnly(mylist);
// 显示元素
Console.WriteLine("Read Only List: ");
foreach(var items in readonlList)
Console.Write(items + " ");
Console.Write("");
// Trying to modify the read-only list
try
{
readonlList.Add(6);
}
catch (NotSupportedException e)
{
Console.WriteLine("Exception: " + e.Message);
}
}
}
输出
以下是输出 -
Read Only List: 1 2 3 4 5 Exception: Collection is read-only.
示例 3:在 C# 中更新只读 ArrayList
在此示例中,我们创建一个 ArrayList。然后使用 ReadOnly() 方法将其包装为只读。之后,我们尝试更新 ArrayList 中的元素 -
using System;
using System.Collections;
class Example {
public static void Main() {
// 创建并初始化新的 ArrayList
ArrayList mylist = new ArrayList {1, 2, 3, 4, 5};
// 创建只读包装器
ArrayList readonlList = ArrayList.ReadOnly(mylist);
// 显示元素
Console.WriteLine("Read Only List: ");
foreach(var items in readonlList){
Console.Write(items + " ");
}
Console.Write("");
try
{
readonlList[2] = 10;
}
catch (NotSupportedException e)
{
Console.WriteLine("Exception: " + e.Message);
}
}
}
输出
以下是输出 -
Read Only List: 1 2 3 4 5 Exception: Collection is read-only.
示例 4:列表中具有动态更新的只读包装器
此示例演示了只读 ArrayList 不允许修改;但是,对原始 ArrayList 所做的任何更改仍会反映在只读版本中 -
using System;
using System.Collections;
class Example {
static void Main() {
ArrayList list = new ArrayList() {
"Apple",
"Banana",
"Cherry"
};
ArrayList readOnlyList = ArrayList.ReadOnly(list);
Console.WriteLine("Read-Only List:");
foreach(var item in readOnlyList) {
Console.Write(item + " ");
}
Console.WriteLine();
// 尝试修改只读列表
try {
readOnlyList.Add("Mango");
} catch (NotSupportedException e) {
Console.WriteLine("Exception: " + e.Message);
}
// 修改原始列表
// 允许,因为 myList 不是只读的
list.Add("Mango");
Console.WriteLine("Updated Original List:");
foreach(var item in list) {
Console.Write(item + " ");
}
Console.WriteLine();
Console.WriteLine("Updated Read-Only List (Reflects changes in original):");
foreach(var item in readOnlyList) {
Console.Write(item + " ");
}
}
}
输出
以下是输出 -
Read-Only List: Apple Banana Cherry Exception: Collection is read-only. Updated Original List: Apple Banana Cherry Mango Updated Read-Only List (Reflects changes in original): Apple Banana Cherry Mango

