C#使用数组。在Arraylist中的何处

C#使用数组。在Arraylist中的何处,c#,arrays,C#,Arrays,我有一组带有数组的C#代码,我需要将数组拆分成更小的数组。 我在声明具有以下内容的数组时没有错误: List<int> array = new List<int>(); 是否有任何方法可以使用数组。数组列表中的哪里?下面是我的代码: List<int> array = new List<int>(); for (int i = 0; i <=20; i++){ if (unitIsPresent) { array.add

我有一组带有数组的C#代码,我需要将数组拆分成更小的数组。 我在声明具有以下内容的数组时没有错误:

List<int> array = new List<int>();
是否有任何方法可以使用数组。数组列表中的哪里?下面是我的代码:

List<int> array = new List<int>();

for (int i = 0; i <=20; i++){
  if (unitIsPresent) 
  {
    array.add(1);
  } 
  else
  {
    array.add(0)
  }
}

devidedArray = array.Where((e, i) => i >= 5 && i < 10).ToArray();
List数组=新列表();
对于(int i=0;i i>=5&&i<10).ToArray();

> p>数组列表是非泛型集合类型,因此在不考虑项目类型的数组中存储项目是很好的。因此,您不能使用用于Where等泛型集合的Linq方法。
我的建议是使用列表并使用提供的Linq方法将其转换为数组。这种方法非常快。

如果您确实想使用
ArrayList
(真的吗?为什么?),您可以使用
of type()
IEnumerable
更改为
IEnumerable

var-devidedArray=array.OfType()。其中((e,i)=>i>=5&&i<10)。ToArray();
或者,您可以使用
Cast()

var-devidedArray=array.Cast()。其中((e,i)=>i>=5&&i<10)。ToArray();
两者之间的区别在于,
OfType()
将自动忽略无法强制转换为
int
的对象,而
cast()
将失败,出现
InvalidCastException

看看微软的文档

我们不建议您在新开发中使用ArrayList类。相反,我们建议您使用泛型列表类


只需使用
List
来替换
ArrayList

为什么首先要使用
ArrayList
?像
Where
这样的东西是实现
IEnumerable
的任何东西上的LINQ扩展方法(例如
List
,在您的示例中,
T
int
ArrayList
不是泛型的,因此它不实现
IEnumerable
,只实现
IEnumerable
。因此,这些方法不可用。当甚至有人建议不要在新开发中使用
ArrayList
时,我不得不回应Sweeper的问题:“你为什么要首先使用
ArrayList
?“我有没有办法使用数组。数组列表中的位置?”简短回答:No@MongZhu好。。。不完全没有;可以定义自己的扩展方法(例如
公共静态IEnumerable Where(此ArrayList列表,Func谓词)=>list.Cast().Where(谓词);
),但这不是一个好主意;完全同意“不要使用
ArrayList
”是从这个开始的观点@蒙珠
List<int> array = new List<int>();

for (int i = 0; i <=20; i++){
  if (unitIsPresent) 
  {
    array.add(1);
  } 
  else
  {
    array.add(0)
  }
}

devidedArray = array.Where((e, i) => i >= 5 && i < 10).ToArray();
var devidedArray = array.OfType<int>().Where((e, i) => i >= 5 && i < 10).ToArray();
var devidedArray = array.Cast<int>().Where((e, i) => i >= 5 && i < 10).ToArray();