我刚开始在一些C#代码中使用ArrayLists,在排序时遇到了一些问题。
首先,我在我的类下定义创建一个ArrayList对象:
ArrayList cutList = new ArrayList;
然后我设置并排序数组列表以找到最小值:
cutList.Add("2200","1800","1200","1");
int minList = (int)GetMinValue(cutList);
使用该功能:
public static object GetMinValue(ArrayList arrList)
{
ArrayList sortArrayList = arrList;
sortArrayList.Sort();
return sortArrayList[0];
}
后来我尝试找到索引cutList [2]并找到" 1200"因为该函数还对cutList进行了排序。我在过去也遇到了同样的问题,当我将变量设置为应用程序设置,然后在修改变量时应用程序设置发生变化。如何正确解决这些问题。我自己一直在学习C#,并且在跳过一点点内疚。是否有关于我缺少的对象的课程?
答案 0 :(得分:0)
代码中的问题是ArrayList sortArrayList = arrList;
不会将arrList
复制到sortArrayList
:分配只会为现有对象创建新别名。要使代码正常工作,请使用
ArrayList sortArrayList = (ArrayList)arrList.Clone();
我必须补充一点,这可能是查找列表中min元素的最低效方式,也是一个相当古老的容器。我更喜欢使用List<string>
而不是ArrayList
,并使用LINQ的Min()
函数来获取最小元素。