偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

在 C# 中將 List 轉(zhuǎn)換為只讀的 List

開發(fā)
在 C# 編程中,有時(shí)候我們需要將一個(gè) List<T> 轉(zhuǎn)換為一個(gè)只讀的集合,以防止其他代碼修改該集合的內(nèi)容。C# 提供了幾種方法來實(shí)現(xiàn)這一點(diǎn),本文將介紹幾種常用的方法,并包含示例代碼。

在 C# 編程中,有時(shí)候我們需要將一個(gè) List<T> 轉(zhuǎn)換為一個(gè)只讀的集合,以防止其他代碼修改該集合的內(nèi)容。C# 提供了幾種方法來實(shí)現(xiàn)這一點(diǎn),本文將介紹幾種常用的方法,并包含示例代碼。

方法一:使用 AsReadOnly 方法

List<T> 類提供了一個(gè) AsReadOnly 方法,它返回一個(gè) ReadOnlyCollection<T>,這是一個(gè)只讀的集合視圖。注意,ReadOnlyCollection<T> 只是一個(gè)包裝器,它不會(huì)復(fù)制原始列表的內(nèi)容,所以對(duì)原始列表的修改仍然會(huì)影響到這個(gè)只讀視圖,但你不能通過 ReadOnlyCollection<T> 進(jìn)行修改。

示例代碼

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;

class Program
{
    static void Main()
    {
        List<int> originalList = new List<int> { 1, 2, 3, 4, 5 };

        // 轉(zhuǎn)換為只讀集合
        ReadOnlyCollection<int> readOnlyList = originalList.AsReadOnly();

        // 可以讀取但不能修改
        foreach (int item in readOnlyList)
        {
            Console.WriteLine(item);
        }

        // 下面的代碼將會(huì)編譯錯(cuò)誤,因?yàn)?readOnlyList 是只讀的
        // readOnlyList.Add(6);

        // 對(duì)原始列表的修改仍然會(huì)影響到只讀集合
        originalList.Add(6);
        Console.WriteLine("After adding to original list:");
        foreach (int item in readOnlyList)
        {
            Console.WriteLine(item);
        }
    }
}

方法二:使用 LINQ 創(chuàng)建新的只讀集合

如果你希望創(chuàng)建一個(gè)完全獨(dú)立的只讀集合(即原始列表的修改不影響新集合),可以使用 LINQ 的 ToList 方法結(jié)合 AsReadOnly,或者直接使用 Array.AsReadOnly 將列表轉(zhuǎn)換為數(shù)組再包裝為只讀集合。

示例代碼

使用 ToList 和 AsReadOnly:

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;

class Program
{
    static void Main()
    {
        List<int> originalList = new List<int> { 1, 2, 3, 4, 5 };

        // 創(chuàng)建一個(gè)新的列表并轉(zhuǎn)換為只讀集合
        ReadOnlyCollection<int> readOnlyList = originalList.ToList().AsReadOnly();

        // 可以讀取但不能修改
        foreach (int item in readOnlyList)
        {
            Console.WriteLine(item);
        }

        // 對(duì)原始列表的修改不會(huì)影響到新的只讀集合
        originalList.Add(6);
        Console.WriteLine("After adding to original list:");
        foreach (int item in readOnlyList)
        {
            Console.WriteLine(item);
        }
    }
}

使用 Array.AsReadOnly:

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;

class Program
{
    static void Main()
    {
        List<int> originalList = new List<int> { 1, 2, 3, 4, 5 };

        // 將列表轉(zhuǎn)換為數(shù)組再包裝為只讀集合
        ReadOnlyCollection<int> readOnlyList = Array.AsReadOnly(originalList.ToArray());

        // 可以讀取但不能修改
        foreach (int item in readOnlyList)
        {
            Console.WriteLine(item);
        }

        // 對(duì)原始列表的修改不會(huì)影響到新的只讀集合
        originalList.Add(6);
        Console.WriteLine("After adding to original list:");
        foreach (int item in readOnlyList)
        {
            Console.WriteLine(item);
        }
    }
}

結(jié)論

在 C# 中,將 List<T> 轉(zhuǎn)換為只讀的集合主要有兩種方法:使用 AsReadOnly 方法獲得一個(gè) ReadOnlyCollection<T>,或者使用 LINQ 和數(shù)組的方法創(chuàng)建一個(gè)獨(dú)立的只讀集合。選擇哪種方法取決于你的具體需求,如果你希望原始列表的修改能夠反映到只讀集合中,可以使用 AsReadOnly;如果你希望創(chuàng)建一個(gè)完全獨(dú)立的只讀集合,則可以使用 LINQ 或 Array.AsReadOnly。

責(zé)任編輯:趙寧寧 來源: 后端Q
相關(guān)推薦

2015-11-24 09:53:22

AngularJSXMLJSON

2021-01-30 11:12:21

C#List數(shù)據(jù)

2020-04-06 20:30:37

JavaScriptBoolean開發(fā)

2022-12-25 16:15:38

HTMLJava可視化文檔

2009-09-14 18:34:32

C# List排序

2022-09-22 11:40:11

JavaScript數(shù)組開發(fā)

2021-06-07 12:20:14

LinuxASCII命令

2009-07-29 10:24:52

HTM轉(zhuǎn)換為PDF

2024-03-12 07:35:39

Python字符串列表

2024-05-23 08:40:21

C#List映射工具

2021-12-29 07:56:32

Go byte io.Reader

2024-09-18 05:35:00

LINQC#

2009-07-31 14:09:41

c#時(shí)間格式轉(zhuǎn)換

2009-11-02 17:15:42

C#轉(zhuǎn)換為VB.NET

2024-09-20 17:03:48

C#代碼編程

2016-11-15 14:29:14

Linux文件編碼轉(zhuǎn)換

2019-08-21 13:30:25

Node.jsSVG前端

2021-11-09 12:11:55

C# Redis隊(duì)列

2022-12-25 15:56:30

JavaScript字符串

2009-08-24 09:55:26

C#接口轉(zhuǎn)換
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)