Joh*_*ohn 4 c# data-structures
List<string> dinosaurs = new List<string>();
dinosaurs.Add("Tyrannosaurus");
dinosaurs.Add("Amargasaurus");
dinosaurs.Add("Deinonychus");
dinosaurs.Add("Compsognathus");
Run Code Online (Sandbox Code Playgroud)
我为什么要使用ReadOnlyCollection
如下:
var readOnlyDinosaurs = new ReadOnlyCollection<string>(dinosaurs);
Run Code Online (Sandbox Code Playgroud)
代替:
dinosaurs.AsReadOnly();
Run Code Online (Sandbox Code Playgroud)将List设置为ReadOnlyCollection或AsReadOnly的真正优势是什么?
一般来说,它们是相同的,正如欧文所提到的那样.有一个重要的案例,他们有所不同.因为该AsReadOnly
方法是通用的,所以新创建的类型ReadOnlyCollection
是不受欢迎的,没有具体列出.通常这只会为您节省一些打字,但在匿名类型的情况下,它确实很重要.如果您有一个需要使用的匿名对象列表AsReadOnly
,而不是new ReadOnlyCollection<ATypeThatHasNoName>
.
如果你看一下AsReadOnly()的代码没有区别:
public ReadOnlyCollection<T> AsReadOnly()
{
return new ReadOnlyCollection<T>(this);
}
Run Code Online (Sandbox Code Playgroud)