gpt4 book ai didi

c# - C# 对象的事务?

转载 作者:IT王子 更新时间:2023-10-29 04:38:11 26 4
gpt4 key购买 nike

只是好奇,是否支持普通 C# 对象上的事务?喜欢

using (var transaction = new ObjectTransaction(obj))
{
try
{
obj.Prop1 = value;
obj.Prop2 = value;
obj.Recalculate(); // may fire exception
transaction.Commit(); // now obj is saved
}
except
{
transaction.Rollback(); // now obj properties are restored
}
}

只是为了让答案更有用 ;-) 其他语言有类似的东西吗?

STM 更新:这是它声称的内容:

atomic {
x++;
y--;
throw;
}

将保持 x/y 不变,包括链式方法调用。看起来像我要求的。至少它很有趣。我认为这已经足够接近了。此外,其他语言也有类似的东西,例如 Haskell STM。请注意,我没有说它应该用于生产 ;-)

最佳答案

Microsoft 正在为此努力。阅读有关软件事务内存的信息。

他们使用几种不同的语法:

// For those who like arrows
Atomic.Do(() => {
obj.Prop1 = value;
obj.Prop2 = value;
obj.Recalculate();
});

// For others who prefer exceptions
try {
obj.Prop1 = value;
obj.Prop2 = value;
obj.Recalculate();
}
catch (AtomicMarker) {
}

// we may get this in C#:
atomic {
obj.Prop1 = value;
obj.Prop2 = value;
obj.Recalculate();
}

关于c# - C# 对象的事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1765615/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com