C# 具有索引的for循环或foreach中的#c(ArrayList)中的集合
C#对我来说是新的,我正在尝试迭代一个集合,在本例中,我尝试了我的一个类的ArrayList,我经常在Java中使用它。目标是循环和比较ArrayList,并获得当前位置的索引C# 具有索引的for循环或foreach中的#c(ArrayList)中的集合,c#,arraylist,collections,C#,Arraylist,Collections,C#对我来说是新的,我正在尝试迭代一个集合,在本例中,我尝试了我的一个类的ArrayList,我经常在Java中使用它。目标是循环和比较ArrayList,并获得当前位置的索引 为什么不能用类型启动ArrayList ArrayList myAL=new ArrayList() 为什么我不能键入ArrayList来访问MyClass的公共方法 与Java不同,C#中的ArrayList不是泛型的。如果需要类型参数,应使用System.Collections.Generic命名空间中的List列表
ArrayList myAL=new ArrayList()代码>
为什么我不能键入ArrayList来访问MyClass的公共方法
与Java不同,C#中的ArrayList
不是泛型的。如果需要类型参数,应使用System.Collections.Generic
命名空间中的List
<代码>列表
实际上比数组列表
更受欢迎-后者仍然存在,主要是为了向后兼容
但是如果您需要直接访问索引,我建议您使用一个简单的for
-循环
ArrayList
不是泛型的。如果需要类型参数,应使用System.Collections.Generic
命名空间中的List
<代码>列表实际上比数组列表
更受欢迎-后者仍然存在,主要是为了向后兼容但如果您需要直接访问索引,我建议您使用一个简单的
for
-循环。foreach
使用枚举器循环集合,索引不是集合的一部分,而是使用MoveNext
<代码>移动下一个强制循环移动到下一个对象
假设列表是这样的
List<MyClass> list = new List<MyClass>();
然后使用for
循环在ListNumerator上迭代
for(var i = 0; listEnumerator.MoveNext() == true; i++ )
{
Console.WriteLine("Index: {0} and value is: {1}", i, listEnumerator.Current);
}
输出
Index: 0 and value is: value1
Index: 1 and value is: value2
foreach
使用枚举器循环集合,索引不是集合的一部分,而是使用MoveNext
<代码>移动下一个强制循环移动到下一个对象
假设列表是这样的
List<MyClass> list = new List<MyClass>();
然后使用for
循环在ListNumerator上迭代
for(var i = 0; listEnumerator.MoveNext() == true; i++ )
{
Console.WriteLine("Index: {0} and value is: {1}", i, listEnumerator.Current);
}
输出
Index: 0 and value is: value1
Index: 1 and value is: value2
使用
List
而不是过时的ArrayList
您应该使用从网络历史开始就作为非类型集合存在的List not ArrayList。如果您编写((MyClass)myAL[i]),则第二个示例将有效。getSomeValue();使用List
而不是过时的ArrayList
您应该使用从网络历史开始就作为非类型集合存在的List not ArrayList。如果您编写((MyClass)myAL[i]),则第二个示例将有效。getSomeValue();
var listEnumerator = list.GetEnumerator();
for(var i = 0; listEnumerator.MoveNext() == true; i++ )
{
Console.WriteLine("Index: {0} and value is: {1}", i, listEnumerator.Current);
}
Index: 0 and value is: value1
Index: 1 and value is: value2