【问题标题】:Create an Array of size N and with all the elements equals to 2 [duplicate]创建一个大小为 N 且所有元素都等于 2 的数组 [重复]
【发布时间】:2022-09-23 05:47:02
【问题描述】:

我正在使用 C#。我想创建一个包含 N 个元素的整数数组,所有元素都具有相同的值:

int[] array = new int[N] {2};

但是该代码不起作用。

N 是 [1..100,000] 范围内的整数

我该怎么做?

标签: c# .net


【解决方案1】:

如果你想快速做到这一点,那么你需要去旧学校Array 类并使用相对较新的Fill 方法:

int[] array = new int[100_000];
Array.Fill(array, 2);

有一个 LINQ 替代方案也很不错:

int[] array = Enumerable.Repeat(2, 100_000).ToArray();

但是,公平地说,它在底层使用Array.Fill(array, _current);

【讨论】:

  • +1。我发现老式的方式也显示意图Enumerable.Range() 方法更清楚。
  • @AstridE.,老派????自 net 2.1 标准或核心 2.0 以来,Array.Fill 不可用吗?我认为它不存在于 Enumerable.Range 可用的 .net 3.5 中。 Enumerable.Range 意图也像冰一样清晰。
  • @CetinBasoz 我只是引用了作者。我想在这种情况下,“老派”可能会转化为“不那么花哨的裤子”。关于意图,这可能是个人的:我发现使用Array 方法,您只需阅读“用 2s 填充数组”。尽管使用Enumerable.Range 方法时可以很容易地理解发生了什么,但不能直接从代码中读取它。
  • @CetinBasoz - 你是对的。我已经更新了答案。
【解决方案2】:

你可以用 LINQ 做到这一点:

var array = Enumerable
    .Range(1, 100_000)
    .Select(x => 2)
    .ToArray();

【讨论】:

    【解决方案3】:

    C# 没有类似于其他语言的数组初始化快捷方式。您可以将其填充到循环中,或将 Linq 与 Enumerable.Range 一起使用。 IE:

    int N = 10;
    var array = Enumerable.Range(1, N).Select(e => 2).ToArray();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-17
      • 2018-12-15
      • 1970-01-01
      • 2018-02-25
      相关资源
      最近更新 更多