如何按索引移除矩形数组中高度为0的元素?
移除矩形数组中高度为0的元素
因为数组本身是固定长度的,没法直接删除元素,只能通过生成新数组并替换原变量的方式实现需求——这样既不用改成List<>,也能让所有引用该数组变量的地方拿到过滤后的结果。下面给两种可行的实现方式:
方法一:用LINQ快速筛选(最简洁)
假设你的矩形类是自带的System.Drawing.Rectangle或者自定义的、包含Height属性的类,直接用LINQ的Where方法过滤即可:
// 原矩形数组,包含10个元素(2个高度为0) Rectangle[] rectArray = ...; // 筛选出高度不为0的元素,生成新数组替换原变量 rectArray = rectArray.Where(rect => rect.Height != 0).ToArray();
Where(rect => rect.Height != 0)会遍历原数组,只保留符合条件的元素ToArray()把筛选结果转回矩形数组,替换原变量后,所有引用该变量的代码都会使用新的过滤后数组
方法二:手动遍历筛选(不依赖LINQ)
如果项目不能用LINQ,就手动统计有效元素数量再生成新数组:
Rectangle[] rectArray = ...; // 第一步:统计高度不为0的元素个数 int validCount = 0; foreach (var rect in rectArray) { if (rect.Height != 0) validCount++; } // 第二步:创建新数组并复制有效元素 Rectangle[] newRects = new Rectangle[validCount]; int currentIndex = 0; foreach (var rect in rectArray) { if (rect.Height != 0) { newRects[currentIndex++] = rect; } } // 替换原数组变量 rectArray = newRects;
内容的提问来源于stack exchange,提问作者Alisha
相关产品推荐
相关产品推荐

