gpt4 book ai didi

.net - 枚举一个集合,然后修改它,抛出异常的先例是什么?

转载 作者:行者123 更新时间:2023-12-02 06:25:13 25 4
gpt4 key购买 nike

枚举 .NET 集合时,MSDN states那:

An enumerator remains valid as long as the collection remains unchanged. If changes are made to the collection, such as adding, modifying, or deleting elements, the enumerator is irrecoverably invalidated and its behavior is undefined.

“不可恢复地失效”到底是什么意思?

以一棵二叉树为例,既有向下到左右子节点的引用,也有向上到父节点的引用。在这样的树中,对树中单个节点的单个引用足以在树中导航,因为您可以从中轻松找到树中的下一个节点。

那么对于那棵树,假设我删除了一些其他节点(大概,我没有删除我当前所在的节点),我是否仍然应该使枚举器无效?请注意,我在这里不是在谈论多线程操作,只是单线程运行一个循环,并在循环体内修改集合。

这个“法则”真的是这样的,即使枚举器可以继续,它也不应该继续吗?

最佳答案

Is this "law" really that, a law, that even if the enumerator could continue, it shouldn't?

就我个人而言,我认为让您的枚举器抛出,即使理论上它可以继续,也是一种很好的做法。

人们常常不经意地将更改集合的代码放在 foreach 循环中。如果不这样做,它可能不会抛出开发人员当前正在测试的特定实例,但不同的运行时条件很容易使其抛出。

通过始终抛出,您迫使开发人员将您的代码视为与框架的集合和枚举相同,我认为这是一件好事,因为它减少了处理您的库时的意外程度。

关于.net - 枚举一个集合,然后修改它,抛出异常的先例是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2001310/

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