博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
遍历ArrayList数组时可能存在的问题
阅读量:6037 次
发布时间:2019-06-20

本文共 2448 字,大约阅读时间需要 8 分钟。

我们都知道ArrayList类中有个重要的方法是Add(),该方法用于向集合中添加元素,它有一个object类型的参数,表示通过该方法可以向集合中添加任意类型的项,由于ArrayList动态数组中的元素可以多样化,当使用foreach语句遍历ArrayList数组时,可能会给程序带来潜在的问题。

我们来讨论下,代码如下:

class Program    { //遍历arraylist出现的问题分析        static void Main(string[] args)        {            ArrayList arr = getArrayList();               foreach (int item in arr)            {                Console.WriteLine(item.ToString());            }            Console.ReadLine();        }        static ArrayList getArrayList()//声明getArrayList()的方法,返回arraylist的实例。        {            ArrayList arr = new ArrayList();            //动态数组的元素都为整型。            arr.Add(1);            arr.Add(2);            arr.Add(3);            return arr;        }    }

嗯,这样没有问题,那么要是这样呢?

class Program    { //遍历arraylist出现的问题分析        static void Main(string[] args)        {            ArrayList arr = getArrayList();            foreach (int item in arr)            {                Console.WriteLine(item.ToString());            }            Console.ReadLine();        }        static ArrayList getArrayList()//声明getArrayList()的方法,返回arraylist的实例。        {            ArrayList arr = new ArrayList();            //动态数组的元素都为整型。            arr.Add(1);            arr.Add(2);            arr.Add(3);            //添加浮点型的元素            arr.Add(2f);            //添加日期类型的元素            arr.Add(DateTime.Today);            //添加字符型元素            arr.Add("hello");            return arr;        }    }

嗯,出问题了,如下:

说指定的转化无效,选中它,快速监视,我们发现:

item的值是3,也就是第四个元素时 类型是int,而item的值是3对应的元素类型是float,要转换为int,那么必然会转化失败。

思考良久,发现可以在遍历ArrayList之前过滤一下,因此有了一下的解决办法。如下

class Program    { //遍历arraylist出现的问题分析        static void Main(string[] args)        {            ArrayList arr = getArrayList();            int[]intArray=arr.OfType
().ToArray
(); foreach (int item in intArray) { Console.WriteLine(item.ToString()); } Console.ReadLine(); } static ArrayList getArrayList()//声明getArrayList()的方法,返回arraylist的实例。 { ArrayList arr = new ArrayList(); //动态数组的元素都为整型。 arr.Add(1); arr.Add(2); arr.Add(3); //添加浮点型的元素 arr.Add(2f); //添加日期类型的元素 arr.Add(DateTime.Today); //添加字符型元素 arr.Add("hello"); return arr; } }

调试后,发现这样可以避免这样的问题发生。效果如下:

 

转载于:https://www.cnblogs.com/jason-davis/p/4014539.html

你可能感兴趣的文章
js-模块化requirejs
查看>>
多年以来,你可找到努力的动力?
查看>>
java中 Map 遍历方法
查看>>
Cisco IOU 模拟器测试感受
查看>>
编写grains自定义脚本
查看>>
经典的静态路由的实验
查看>>
Android系统特质 不需要太多剩余内存
查看>>
算法之选择排序算法
查看>>
我的第一篇博客 Java数据流_1
查看>>
软件需求规格说明书
查看>>
MPLS 标签分发详解
查看>>
Basics of How SMTP Works
查看>>
Cocos2d-x编程中的runOnUiThread方法和runOnGLThread方法剖析
查看>>
在一个公司待上多久跳槽最合适?
查看>>
我的友情链接
查看>>
8Python全栈之路系列之MySQL触发器
查看>>
字符串转换
查看>>
图说:Windows 8的Metro电脑设置(控制面板)
查看>>
Linux中mysql修改用户名密码
查看>>
各种颜色的十六进制代码
查看>>