我有一个名为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;
感谢您对如何解决此问题的任何帮助。
答案 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);