- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
List<string> dinosaurs = new List<string>();
dinosaurs.Add("Tyrannosaurus");
dinosaurs.Add("Amargasaurus");
dinosaurs.Add("Deinonychus");
dinosaurs.Add("Compsognathus");
为什么我应该使用 ReadOnlyCollection
,如下所示:
var readOnlyDinosaurs = new ReadOnlyCollection<string>(dinosaurs);
代替:
dinosaurs.AsReadOnly();
将列表创建为 ReadOnlyCollection 或 AsReadOnly 的真正优势是什么?
最佳答案
一般来说,它们是一样的,as mentioned by Erwin .有一个重要的案例,它们有所不同。因为AsReadOnly
方法是通用的,新创建的类型ReadOnlyCollection
是推测的,没有具体列出。通常这只是为您节省了一些输入,但在匿名类型的情况下它实际上很重要。如果您有匿名对象列表,则需要使用 AsReadOnly
, 而不是 new ReadOnlyCollection<ATypeThatHasNoName>
.
关于c# - 将列表制作成 ReadOnlyCollection 或 AsReadOnly 的优点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12185387/
In 想知道此方法是返回集合的副本还是仅返回 ReadOnlyCollection 的实例,后者将以某种方式包装原始集合,而不读取所有引用。 我必须明白如果它会浪费内存空间,它会复制所有指针到我的实例
示例代码如下:只读扩展不适用于引用类型集合。如果我将 Employee 更改为字符串,那么它将起作用。有人可以解释为什么我会出现这种行为。 List Emps = new List(2
List dinosaurs = new List(); dinosaurs.Add("Tyrannosaurus"); dinosaurs.Add("Amargasaurus"); dinosaur
根据 MSDN,.AsReadOnly() 方法被列为受 PCL 支持,但我无法在我的 Xamarin PCL 上引用它。 任何人都可以验证这一点吗?如果是这样,是否有任何替代 .AsReadOnly
我在 this 中看到了一些代码引起我注意的项目。 有一个简单的方法可以调用 List 上的 AsReadOnly。该方法没有对 ReadOnlyCollection 做任何事情,而是立即返回它并将其
List工具 IReadOnlyCollection接口(interface)并提供AsReadOnly()返回 ReadOnlyCollection 的方法(它又实现了 IReadOnlyColle
我是一名优秀的程序员,十分优秀!