|
|
1
-2
你可以使用 Memento pattern 实现对象回滚。从 here …
一旦您收到指示应该回滚的事件,就可以撤消更改并返回到调用方。这里有一些 info. and links 关于不应使用thread.abort的原因。 |
|
|
2
5
如果我对你的理解正确,如果某些条件为真,你希望撤销对某些变量所做的更改?如果是这种情况,您将希望存储所有变量(或整个类)的副本。然后,如果条件成立,那么在从函数返回之前,必须将所有这些变量恢复到初始状态。应该是这样的:
|
|
|
3
2
堆上的一般回滚功能对我来说是闻所未闻的。但您可以使用命令模式获取撤消功能,并使用它进行回滚: http://en.wikipedia.org/wiki/Command_pattern 本质上,您将一个操作封装在一个对象中,该对象存储了足够的更改信息,可以撤消更改。将该对象推到堆栈上,当您的条件出现时,将弹出堆栈中的所有命令对象并撤消它们。如果没有关于你的案件的更多信息,就很难给出更具体的信息或判断这是否适用于你。 |
|
|
4
1
这是一个错误条件,在调用该方法之前可能已经被检查过了吗?如果是这样,抛出异常。
否则,
|
|
|
5
1
这就是例外的原因。抛出异常以终止函数和任何调用方,直到到达异常处理程序为止。 请注意,只有在发生异常情况时才应执行此操作;异常不应用作“不同类型”的返回值,因为与正常返回相比,异常在代码大小(无论是否引发)和运行时间(如果引发)方面的成本更高。 只要回到你以前的状态,这是可能的 如果 您的代码和进行调用的任何库代码都是用 异常安全 态度。 |
|
|
6
0
我猜你是在谈论对象事务或事务性内存。 你至少可以记录被修改对象的状态(分配),并在分配条件失败时在其上写入旧值。 |
|
|
7
0
另一种解决方案与上述方案稍有不同: 在示例方法中不时检查指定的条件。
这可能与书中的描述不符,但是如果您不经常使用它,它会提供非常简单和可读的代码。 如果你想返回到程序状态,我可能不需要提到你需要保存程序的状态,你需要写一些代码来返回到这个状态。 |
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |