【问题标题】:Return a subset of Array using index C#使用索引 C# 返回 Array 的子集
【发布时间】:2011-03-07 02:59:24
【问题描述】:

在给定 fromIndex 和 toIndex 的情况下,返回 C# 数组子集的最佳方法是什么?

显然我可以使用循环,但还有其他方法吗?

这是我要填写的方法签名。

public static FixedSizeList<T> FromExisting(FixedSizeList<T> fixedSizeList, Int32 fromIndex, Int32 toIndex)

FixedSizeList 内部实现是

private T[] _Array;
this._Array = new T[size];

【问题讨论】:

  • 大声笑,是的,我自己也注意到了。泛型伤害了我的大脑......

标签: c# arrays generics subset


【解决方案1】:
myArray.Skip(fromIndex).Take(toIndex - fromIndex + 1);

编辑: Skip 和 Take 的结果是 IEnumerable 并且计数将为零,直到您实际使用它。

如果你尝试

        int[] myArray = {1, 2, 3, 4, 5};
        int[] subset = myArray.Skip(2).Take(2).ToArray();

子集将是 {3, 4}

【讨论】:

  • 我实际上比所有人都更喜欢这种方法,但我无法让它发挥作用。 Skip() 无论我传入什么都会返回 0 个项目...一定是做错了什么...嗯
  • @Maxim 您可以尝试将 .ToArray() 添加到表达式中。
  • 知道了...没注意到我正在处理 IEnumerable...再次感谢伙计 :-)
  • 我发现我需要以下内容才能完成这项工作:using System.Linq;
【解决方案2】:

List 已经有一个 CopyTo 方法,它应该可以做你想做的事情。

http://msdn.microsoft.com/en-us/library/3eb2b9x8.aspx

这是方法的签名:

public void CopyTo( int index, T[] array, int arrayIndex,   int count )

【讨论】:

    【解决方案3】:

    Array.Copy 会做what you want

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-06
      • 2011-03-19
      • 2022-07-07
      • 2017-10-13
      • 2016-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多