c# - C# 中的 foreach 和带有 List<T> 的传统 for 循环

标签 c# c++ list foreach iterator

在 C# 中,我刚刚发现没有像 C++ 或 Java 的迭代器这样的东西。在 C++ 中,建议我不要使用索引迭代链接列表,因为从每个循环的第一个节点访问都会影响性能。但在C#中我似乎只有两个选择。传统for循环 VS foreach

C# 中有什么不同吗?与 C++ 不同,for 循环没有性能问题吗?

我还听说 foreach 会像 Java 一样在每次循环迭代中创建每个新变量,所以我不知道哪一个适合低端手机。

最佳答案

这并不能完全回答你的问题,但仍然想指出这个假设是错误的:

In C#, I just found out there's no such thing like an iterator of C++ or Java

在 C# 中称为枚举器,请参阅 IEnumerator<T> .

另请考虑使用传统 for 的代码示例-循环:

static void Main(string[] args)
{
    var data = new List<int> { 7, 10, 0 };
    for (var it = data.GetEnumerator(); it.MoveNext(); )
    {
        Console.WriteLine(it.Current);
    }
}

无论如何,我认为没有人会迭代列表或 IEnumerable就像这个示例一样:)

关于c# - C# 中的 foreach 和带有 List<T> 的传统 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33890771/

相关文章:

c++ - 在 linux 中拦截/重新路由 TCP SYN 数据包到 C++ 程序

c++ - 整数和实数类型的不同模板行为

用于列表比较的 Python IN 运算符

r - 如何将命名向量转换为命名列表,同时将具有相同名称的条目分组到一个列表元素中?

c# - 检测用户是否购买了 IAP 订阅

c++ - 物理寄存器和Intel SIMD变量之间的关系?

c# - 重新排列数组中的数据库查询结果以查找重复行

python - 如何将文件的大小和名称放入字典中

c# - 自定义警报框显示不正确

c# - 使用 NLog 从 Hangfire 计划的后台作业记录日志