我想交换两个可为空的十进制值,如下所示:
o2 = Interlocked.Exchange(ref o1, o2);
类型“十进制”?必须是引用类型才能将其用作泛型类型或方法“System.Threading.Interlocked.Exchange(ref T, T)”中的参数“T”。
还有比这更好的主意吗:
decimal? temp = o1;
o1 = o2;
o2 = temp;
提前致谢!
两个想法:
- 将其视为
object
并向消费者投射
- 创建一个
Box<T>
class where T:struct
(并使其不可变),并交换一些Box<decimal>
参考
在这两种情况下,消费者都应该在执行其他操作之前获取该值的克隆(没有双重读取;它可能在读取之间发生变化)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)