C#使用数组。在Arraylist中的何处
我有一组带有数组的C#代码,我需要将数组拆分成更小的数组。 我在声明具有以下内容的数组时没有错误: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
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();