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