c# - Interlocked.Exchange 可空十进制

标签 c# .net decimal exchange-server nullable

我想交换两个可为 null 的十进制值,如下所示:

o2 = Interlocked.Exchange(ref o1, o2);

The type 'decimal?' must be a reference type in order to use it as parameter 'T' in the generic type or method 'System.Threading.Interlocked.Exchange(ref T, T)'.

还有比这更好的主意吗:

decimal? temp = o1;
o1 = o2;
o2 = temp;

提前致谢!

最佳答案

两个想法:

  • 将其视为object并投向消费者
  • 创建一个 Box<T> where T:struct (并使其不可变),并交换一些 Box<decimal>引用资料

在这两种情况下,消费者都应该先克隆该值(不要重复读取;它可能会在两次读取之间发生变化)。

关于c# - Interlocked.Exchange 可空十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5719770/

相关文章:

c# - 如何检查表格何时插入新行,然后使用 UpdatePane 自动更新 Repeater

c# - 这个方法是异步的吗?

c# - 使用 Linq [C#] 加载重复命名的 XML 节点

java - 摆脱Java中的小数位?

c# - 门面设计模式与紧耦合

sql - LINQ 订单。它总是返回相同的有序列表吗?

c# - C#中richtextbox显示的行数统计

.net - orchard如何处理模块

c++ - 在C++中从二进制转换为十进制数

mysql - 将数字格式化为 2 位小数