例如,假设我有以下内容:
public class StringTester
{
IEnumerable<IStringConditional> Conditionals { get; }
public StringTester(IEnumerable<IStringConditional> conditionals)
{
conditionals = Conditionals;
}
public bool TestString(string testString)
{
foreach (var conditional in Conditionals)
{
if (!conditional.Test(testString))
{
return false;
}
}
return true;
}
}
这被认为是安全的,还是 IEnumerable 类型仅对于单个枚举是安全的?如果不是,在这种情况下最好使用什么类型?
最佳答案
关于是否IEnumerable<T>
未定义一般情况下是可重复的。经常(通常):确实如此。但是,存在以下示例:
- 只能永远迭代一次(想想“来自套接字的数据”)
- 可以迭代多次,但每次给出完全不同的数据(没有任何对应的明显状态突变)
所以:一般来说,我不建议多次迭代它除非您知道该场景是可重复的。像数组和列表这样的东西是可重复的(当然,如果数据发生变化,它们可能会发生变化以显示这些变化)。
关于c# - 对于可能多次枚举的内容使用 IEnumerable 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60621126/