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