gpt4 book ai didi

c# - C# 中的 JavaScript Array.from 等效于什么(没有 while/for)?

转载 作者:行者123 更新时间:2023-12-01 23:05:31 29 4
gpt4 key购买 nike

经过几年的 Node.js 编程,我已经习惯了 JS,我想知道我们如何避免 C# 中的 while 循环,通过使用更多的“map-like”方法(如 C# 枚举中的 AddRange)。

例如,如果我想要一个包含 10 个元素的 JavaScript 数组,每个元素都有一个每次递增的属性,我会这样做:

const cells = Array.from({ length:10 }, (_, i) => { 'number': i });
// gives cells = [{number: 0}, {number: 1}, ... until 9]

在没有 whilefor 循环的情况下,如何在 C# 中做到这一点?

int itemWantedCount = 10;
int i = 0;
while(cells.Count < itemWantedCount)
{
cells.Add(new MyObject(i++));
}

如果可能的话,我想找到一种方法来代替使用 cells.AddRange,而不使用 for/while。

最佳答案

您可以使用 LINQ 在 C# 中进行函数式列表处理。示例:

// We don't need Select in this toy example, but this is where
// you would put your "map" operation.
var cells = Enumerable.Range(0, 10).Select(i => i).ToArray();

// prints 0123456789
foreach (var c in cells)
Console.Write(c);

解释:

  • Enumerable.Range(start, count) 枚举我们的数字(懒惰 - 直到稍后调用 ToArray() 才会发生任何事情)。
  • Select 是“ map ”——您已经很熟悉了。在您的示例中,您会将 i => i 替换为 i => new MyObject(i)
  • ToArray():具体化延迟创建的枚举。由于数组在 C# 中是固定大小的,因此更惯用的替代方法是 ToList()

关于c# - C# 中的 JavaScript Array.from 等效于什么(没有 while/for)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70959937/

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