假设通用类型为每个类型的组合创建单独的静态字段实例,如果我想要在所有类型中都有一个静态字段,这是一个有效的模式吗?适用于泛型类中静态字段的解决方法?
public class BaseClass
{
public static int P = 0;
}
public class ChildClass<T> : BaseClass
{
public static int Q = 0;
public void Inc()
{
// ChildClass<int> will have a different "Q" than ChildClass<double>
Interlocked.Increment(ref Q);
// all types of ChildClass will increment the same P
Interlocked.Increment(ref P);
}
}
这种方法有什么不安全的吗?我的玩具示例有效,但我只是想确保没有可怕的副作用,线程后果等。:)
只有真正的不安全部分是增量(现在是这样),它不会是线程安全的。编辑:另外,我假设你想控制获取/设置访问(你希望它是公开可设置的,或者只在'Inc'方法内私下增加?) – 2013-03-21 23:53:54
哈哈好点。我的例子不得不不小心。假设互锁的东西或其他请 – 2013-03-21 23:56:37
我正在处理的实际问题是,我想要一个单线程安全队列,但类添加到这个内部队列的东西是通用的。所以“价值”不会公开设定。 – 2013-03-21 23:58:21