防止其他类更改类中的列表

Mic*_*odd 9 c#

如果我有一个包含例如List <string>的类,并且我希望其他类能够看到列表但是没有设置它,我可以声明

public class SomeClass()
{
    public List<string> SomeList { get; }
}
Run Code Online (Sandbox Code Playgroud)

这将允许另一个类访问SomeList而不设置它.

但是,尽管调用类无法设置列表,但它可以添加或删除元素.我该如何预防呢?我想我可以使用一个字段并返回List的副本而不是使用属性,但这感觉不对.

(这应该很简单但我必须遗漏一些......)

Ano*_*on. 14

您将无法使用autoproperty.

public class SomeClass()
{
    private List<string> someList;
    public IList<string> SomeList { 
        get { return someList.AsReadOnly(); }
    }
}
Run Code Online (Sandbox Code Playgroud)


Gav*_*ler 5

您需要将列表作为ReadOnly list返回。您可以使用以下代码来执行此操作:

using System.Collections.ObjectModel;

public ReadOnlyCollection<string> GetList() {
    return SomeList.AsReadOnly();
}
Run Code Online (Sandbox Code Playgroud)