3
我该如何制作这个通用的?C#如何制作泛型类?
class AtomicReference
{
private Object _value;
public AtomicReference()
{
_value = new Object();
}
public AtomicReference(Object value)
{
OptimisticSet(value);
}
public Object CompareAndSet(Object newValue)
{
return Interlocked.Exchange(ref _value, newValue);
}
public void OptimisticSet(Object newValue)
{
do {
} while (_value == Interlocked.CompareExchange(ref _value, _value, newValue));
}
public Object Get()
{
return _value;
}
}
我的失败尝试:
class AtomicReference<T>
{
private T _value;
public AtomicReference()
{
}
public AtomicReference(T value)
{
Set(value);
}
public T CompareAndSet(T newValue)
{
// _value is not an object that can be referenced
return Interlocked.Exchange(ref _value, newValue);
}
public void OptimisticSet(T newValue)
{
// I can't use the operator== with type T
do{}while(_value == CompareAndSet(newValue));
}
public T Get()
{
return _value;
}
}
再次感谢! :) SLaks是在游戏的顶部! – Kiril 2009-12-02 03:07:26
类型参数的约束(C#编程指南) - http://msdn.microsoft.com/zh-cn/library/d5x73970.aspx – kristian 2009-12-02 03:13:50