我在C#中有一组带有数组的代码,我需要将数组拆分成更小的数组。当我用声明数组时没有错误
List<int> array = new List<int>();
然而,代码执行会在数组中提示错误。其中当我声明为:时
var array = new 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();
数组列表是一个非泛型集合类型,因此最好将项存储在不考虑项类型的数组中。因此,您不能使用用于泛型集合(如Where(的Linq方法。我的建议是使用List,并使用提供的Linq方法将其转换为Array。这种方法非常快。
如果您真的想使用ArrayList
(真的?为什么?(,可以使用OfType<int>()
将IEnumerable
更改为IEnumerable<int>
。
var devidedArray = array.OfType<int>().Where((e, i) => i >= 5 && i < 10).ToArray();
或者,您可以使用Cast<int>()
:
var devidedArray = array.Cast<int>().Where((e, i) => i >= 5 && i < 10).ToArray();
两者的区别在于,OfType()
将静默地忽略无法强制转换为int
的对象,而Cast()
将因InvalidCastException
而失败。
https://learn.microsoft.com/en-us/dotnet/api/system.collections.arraylist?view=net-5.0
看看微软文档。
我们不建议您使用ArrayList类进行新的开发。相反,我们建议您使用泛型List类。。。
只是用CCD_ 10来代替CCD_。