将两个空间对象合并为单个空间
本文关键字:空间 对象 合并 单个 两个 | 更新日期: 2023-09-27 17:57:23
在这里,空间是一个以(xposition,yposition,zposition,长度,深度,高度)作为其元素的类,并且有一个类型空间的列表。
我需要在列表中检查它是否遵循 if 条件中的某些条件。
如果它满足,那么我将两个空间合并为一个空间。之后,我删除了我使用的两个空格。它实际上意味着将两个空间合并为一个空间。
将创建新列表。再次,我将其视为新列表并执行相同的过程,直到它不满足条件。
我的问题是,它正在进入无限循环。我想解决这个问题。
public class MergeSpace
{
public List<Space> Mergespace(List<Space> Listofspaces)
{
foreach (Space space1 in Listofspaces)
{
foreach (Space space2 in Listofspaces)
{
//int count = 0;
if ((space1.sheight == space2.sheight)
&& (space1.sdepth == space2.sdepth)
&& (space2.xposition == space1.xposition + space1.slength)
&& (space2.yposition == space1.yposition)
&& (space2.zposition == space1.zposition)
&& (space1.semptyspace == true)
&& (space2.semptyspace == true))
{
Space space = new Space();
space.xposition = space1.xposition;
space.yposition = space1.yposition;
space.zposition = space1.zposition;
space1.slength = space1.slength + space2.slength;
space.sheight = space1.sheight;
space.sdepth = space1.sdepth;
space.semptyspace = true;
Listofspaces.Add(space);
Listofspaces.Remove(space1);
Listofspaces.Remove(space2);
Mergespace(Listofspaces);
}
public class MergeSpace
{
public List<Space> Mergespace(List<Space> Listofspaces)
{
List<Space> mergedspacelist = new List<Space>();
int count=0;
foreach (Space space1 in Listofspaces)
{
foreach (Space space2 in Listofspaces)
{
//int count = 0;
if ((space1.sheight == space2.sheight)
&& (space1.sdepth == space2.sdepth)
&& (space2.xposition == space1.xposition + space1.slength)
&& (space2.yposition == space1.yposition)
&& (space2.zposition == space1.zposition)
&& (space1.semptyspace == true)
&& (space2.semptyspace == true))
{
Space space = new Space();
space.xposition = space1.xposition;
space.yposition = space1.yposition;
space.zposition = space1.zposition;
space1.slength = space1.slength + space2.slength;
space.sheight = space1.sheight;
space.sdepth = space1.sdepth;
space.semptyspace = true;
mergedspacelist .Add(space);
count++;
}
}
}
if(count>0)
{
Mergespace(mergedspacelist );
}
}
不知道你的实际需求是什么,我想这样可以避免无限循环
对于相同的空间实例,您的条件始终会得到满足。实例将与自身合并。
if (!space1.Equals(space2))
{
if ((space1.sheight == space2.sheight)
...
}