在 C# 中使用静态类作为全局对象

发布于 2024-09-12 06:52:55 字数 280 浏览 6 评论 0原文

我正在使用粒子列表。

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不知在何时 2024-09-19 06:52:55

我建议尽可能远离静态类/方法。它们往往会导致代码的高耦合。尽管在某些情况下使用它们要快得多(希望谨慎使用)。

我不太确定您要从问题中得到什么,但我至少建议更改静态类以公开属性而不是字段。

public static class Particles
{
    public static List<Particles> PList { get; set; }
}

或者

public static class Particles
{
    private static List<Particles> _plist;

    public static List<Particles> PList
    {
        get { return _plist; }
        set { _plist = value; }
    }
}

这样您可以对列表进行更多封装。例如,您可以在 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.

public static class Particles
{
    public static List<Particles> PList { get; set; }
}

or

public static class Particles
{
    private static List<Particles> _plist;

    public static List<Particles> PList
    {
        get { return _plist; }
        set { _plist = value; }
    }
}

This way you encapsulate the list a little more. For example, you can check for null values during the getter or setter.

沫离伤花 2024-09-19 06:52:55

这里至少有两个选择:

  1. 在每个对粒子进行操作的类中创建一个 IList 属性。

  2. 在每个对粒子进行操作的类中,创建一个私有 IList 字段和一个将此类列表作为参数的构造函数。

这些选项中的任何一个都将保留列表的封装。

You have at least two options here:

  1. Create an IList<Particles> property in each class that operates on particles.

  2. 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文