静态类中的私有List列表无效

时间:2017-07-29 14:14:07

标签: c# properties

我有一个名为Bodies.cs的静态类。该类有一个Body of List,名为bodylist

我试图从其他类中只读它,以便其他类需要在Bodies.cs中调用一些指定的方法来改变bodylist的内容。但是,他们应该能够自由地阅读它的价值。

我已经在Stackoverflow上进行了大量搜索,但是给出的示例似乎没有帮助:我收到错误消息,或者是空例外,或者它仍然可以从外部执行Bodies.bodylist.Add(mybody)

这是Bodies.cs中的代码:

    static private List<Body> bodylist;

    static public IReadOnlyList<Body> Bodylist
    {
        get { return bodylist; }
    }

使用这些设置,bodylist永远不会更新(它总是为空,当我尝试向列表添加正文时应用程序崩溃)。我收到警告信息:

  

&#34; Field&#39; Bodies.bodylist&#39;永远不会被分配,而且永远都会被分配   其默认值为null&#34;

感谢您对如何解决此问题的任何帮助。

2 个答案:

答案 0 :(得分:1)

bodylist是私有的。这意味着您可以在容器类中修改它。

刚刚初始化它:

  static private List<Body> bodylist = new List<Body>();

或者在静态类构造函数中:

static Bodies()
{
    bodylist = new List<Body>();
}

此外,您可能需要制作一些修饰符方法,例如添加或删除来操作它。

我希望对你有所帮助:)。

答案 1 :(得分:1)

您的静态bodylist将初始化为null。您必须在访问之前创建实例。将您的代码更改为

static private List<Body> bodylist = new List<Body>();

static public IReadOnlyList<Body> Bodylist
{
    get { return new ReadOnlyCollection<Body>(bodylist); }
}

通过返回ReadOnlyCollection,客户端会在尝试添加或删除项目时引发异常。 否则,客户可以这样做:

((List)YourClass.Bodylist).Add(element);