在许多类中共享c#的变量

时间:2014-03-09 15:14:47

标签: c# static

我该如何设计这样的东西?我有一个有很多类的项目,我希望有一个可以被这些类访问的计数器(int类型)。应该只有一个变量实例,每次都会向变量添加一个变量。

2 个答案:

答案 0 :(得分:4)

使用带有公共属性的静态类将是最简单的解决方案。根据您的具体情况,您需要更多高级选项(用于多线程,单元测试/模拟等)。

您可以使用单例类使测试更容易,并在多线程情况下锁定。

一个例子可能是:

public class Counting
{
    private readonly Object _thisLock = new Object();
    private static readonly Lazy<Counting> InstanceField =
                            new Lazy<Counting>(() => new Counting());
    public static Counting Instance // Singleton
    {
        get
        {
            return InstanceField.Value;
        }
    }

    private int _counter;
    public int Counter
    {
        get
        {
            return _counter;
        }
        set
        {
            lock (_thisLock) // Locking
            {
                _counter = value;
            }
        }
    }

    protected Counting()
    {
    }
}

并以这种方式使用它:

Counting.Instance.Counter ++;

答案 1 :(得分:0)

您可以为所有static class成员创建一个实用程序static

static class Utility
{
public static int Count = 123;//some value
/*some other variables*/
}

class MyClass
{
int mycount = Utility.Count;
}

注意:如果您要访问程序集外部的实用程序类,则需要将类设为public