如何在C#中将List <string>转换为ReadOnlyCollection <string>

tec*_*hno 31 .net c# string collections

我想将输入的项目转换为String列表:

System.Collections.ObjectModel.ReadOnlyCollection<string>
Run Code Online (Sandbox Code Playgroud)

我尝试过使用:

(System.Collections.ObjectModel.ReadOnlyCollection<string>)listname
Run Code Online (Sandbox Code Playgroud)

但它返回一个错误.

小智 46

您可以使用构造函数中的现有List创建新实例.

var readOnlyList = new ReadOnlyCollection<string>(existingList);
Run Code Online (Sandbox Code Playgroud)

ReadOnlyCollection(Of T)MSDN上的构造函数


Sea*_*ean 31

如果你有:

List<string> names=new List<string>(){"Rod", "Jane", "Freddy"};

然后你可以说:

ReadOnlyCollection<string> readOnlyNames=names.AsReadOnly();

这不会复制列表.相反,只读集合存储对原始列表的引用,并禁止更改它.但是,如果您通过修改基础列表,names那么readOnlyNames也将更改,因此如果可以,最好丢弃可写实例.


Joh*_*ock 6

ReadOnlyCollection 的构造函数接受 IList

这是一些参考http://msdn.microsoft.com/en-us/library/ms132476.aspx

var myreadonlycollection = new ReadOnlyCollection<string>(listname);
Run Code Online (Sandbox Code Playgroud)


ryu*_*ice 5

var readonlyCollection = new ReadOnlyCollection<string>(list);
Run Code Online (Sandbox Code Playgroud)