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

时间:2010-07-31 22:55:09

标签: c# static-members static-classes

我正在使用粒子列表。

List<Particle> particles;

通常我将此列表放在我的Simulation类中。它可以计算粒子的位置,速度和其他属性。

其他一些类需要此粒子数据进行输出和后期处理。

可以创建静态类

static class Particles
{
    static List<Particles> plist;
}

从其他类访问粒子数据?

2 个答案:

答案 0 :(得分:2)

我建议尽可能远离静态类/方法。它们倾向于导致代码的高度耦合。虽然在某些情况下使用它们要快得多(希望有节制)。

我不太确定你的问题是什么,但我至少建议更改静态类以显示属性而不是字段。

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期间检查空值。

答案 1 :(得分:0)

这里至少有两个选项:

  1. 在每个操作粒子的类中创建一个IList<Particles>属性。

  2. 在每个运行粒子的类中,创建一个私有的IList<Particles>字段和一个将这样的列表作为参数的构造函数。

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