1
25
让我们从一个愚蠢但有说明性的例子开始:
我们从来没有感觉到我们只是把15号变成一串苹果。我们知道
再说一次,这真的没什么用。或者至少它
将
如果要编译,就什么也没有完成。它当然不会将我们的字符串插入int数组——这是不允许的,我们知道
让我们举个例子:
如果要编译,
那么,为什么微软禁止你重新分配用于迭代的指针呢?有一点很清楚——你不想让别人认为他们改变了你在圈内的位置。另一种实现的简单性:变量可能隐藏一些内部逻辑,指示正在进行的循环的状态。 但更重要的是,你没有理由 希望 分配给它。它表示循环序列的当前元素。为其赋值违反了“单一责任原则”或 Curly's Law 如果你遵循恐怖编码。变量应该只意味着一件事。 |
2
14
如果变量是可变的,那可能会给人错误的印象。例如:
一些人 可以 认为这会改变数组内容。有点快了,但这可能是一个原因。今晚我将在我的注释规范中查找它… |
3
10
我认为这是人为的限制,不需要真的去做。为了证明这一点,请将此代码考虑在内,并为您的问题提供可能的解决方案。问题在于设计,但对象的内部更改并不存在问题:
我不知道这种现象,因为我总是按照我描述的方式修改对象。 |
4
2
foreach语句与Enumerable一起使用。与可枚举的不同之处在于它不知道整个集合,几乎是盲目的。 这意味着它不知道接下来会发生什么,或者在下一个迭代周期之前是否有任何事情。所以你经常看到.tolist(),这样人们就可以获取一个可枚举的计数。 由于某些原因,我不确定,这意味着您需要确保在尝试移动枚举器时集合不会发生更改。 |
5
2
修改集合时,修改可能会产生不可预知的副作用。枚举器无法知道如何正确处理这些副作用,因此它们使集合不可变。 |
6
1
使用IEnumerable对象的条件是,使用Enumerable访问基础集合时,基础集合不得更改。可以假定可枚举对象是原始集合的快照。因此,如果在枚举时尝试更改集合,则会引发异常。然而,枚举中获取的对象一点也不可变。 由于foreach循环中使用的变量是循环块的局部变量,因此该变量在块之外不可用。 |
Robert King · Unity C#语法问题-转换位置 1 年前 |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
i_sniff_ket · 在unity之外使用unity类 2 年前 |