在 C# 中使用静态类作为全局对象
我正在使用粒子列表。
List<Particle> particles;
通常我将此列表放在我的模拟类中。它计算粒子的位置、速度和其他属性。
其他一些类需要此粒子数据进行输出和后处理。
可以创建一个静态类
static class Particles
{
static List<Particles> plist;
}
来访问其他类的粒子数据吗?
I am using a list for particles.
List<Particle> particles;
Normally i place this list in my Simulation class. Which calculates position, velocity and other properties of particles.
A few other classes need this particle data for output and post processing.
is it OK to create a static class,
static class Particles
{
static List<Particles> plist;
}
to access particle data from other classes?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我建议尽可能远离静态类/方法。它们往往会导致代码的高耦合。尽管在某些情况下使用它们要快得多(希望谨慎使用)。
我不太确定您要从问题中得到什么,但我至少建议更改静态类以公开属性而不是字段。
或者
这样您可以对列表进行更多封装。例如,您可以在 getter 或 setter 期间检查 null 值。
I would recommend staying away from static classes/methods whenever possible. They tend to lead to high coupling of code. Although there are some cases where it's far faster to use them (hopefully sparingly).
I'm not quite sure what you are going for from your question, but I would at least recommend changing the static class to expose a property instead of a field.
or
This way you encapsulate the list a little more. For example, you can check for null values during the getter or setter.
这里至少有两个选择:
在每个对粒子进行操作的类中创建一个
IList
属性。在每个对粒子进行操作的类中,创建一个私有
IList
字段和一个将此类列表作为参数的构造函数。这些选项中的任何一个都将保留列表的封装。
You have at least two options here:
Create an
IList<Particles>
property in each class that operates on particles.In each class that operates on particles, create a private
IList<Particles>
field and a constructor that takes such a list as a parameter.Either of these options will preserve encapsulation of the list.