📜  C#| Array.AsReadOnly(T [])方法(1)

📅  最后修改于: 2023-12-03 15:30:16.696000             🧑  作者: Mango

C# | Array.AsReadOnly(T[]) 方法

在 C# 中,Array.AsReadOnly(T[]) 方法被用于将数组转换为只读集合。只读集合类似于数组,但与数组不同的是,只读集合不允许修改它们所包含的元素。这是一个非常有用的方法,因为它允许我们从数组中创建一个不可变的只读集合,以便我们可以在不修改原始数组的情况下共享它。

语法
public static ReadOnlyCollection<T> AsReadOnly<T> (T[] array);

Array.AsReadOnly(T[]) 方法接受一个数组参数 array,它返回一个只读集合 ReadOnlyCollection<T>

示例
using System;
using System.Collections.ObjectModel;

class Program {
    static void Main(string[] args) {
        // 创建一个整数数组
        int[] array = { 1, 2, 3, 4, 5 };

        // 将该数组转换为只读集合
        ReadOnlyCollection<int> readOnlyCollection = Array.AsReadOnly(array);

        Console.WriteLine("Original Array: ");
        foreach (int i in array) {
            Console.Write("{0} ", i);
        }

        Console.WriteLine("\n\nReadOnlyCollection Array: ");
        foreach (int i in readOnlyCollection) {
            Console.Write("{0} ", i);
        }

        // 尝试添加元素到只读集合
        //readOnlyCollection.Add(6); // 这里会抛出异常:System.NotSupportedException: 'Collection was of a fixed size.'

        Console.ReadKey();
    }
}

通过上面的示例,我们可以看出,只读集合不能被修改,如果我们尝试在使用 Add() 方法向只读集合添加元素,就会抛出异常。

总结

Array.AsReadOnly(T[]) 方法是将数组转换为只读集合的最佳方法之一。只读集合可以用于共享数据,以便其他类或方法无法修改该数据。只读集合虽然有限制,但也提供了很多好处,例如保护元素免受误操作、方便测试等。如果你需要一个不可变的集合,考虑将数组转换为只读集合。