我希望用我的列表实现算术运算,在这种情况下: 列“宽度”*列“高度”应重新写入“部分”列。 我试过做一个循环,但它不起作用。 我在行上放了一个breakPoint:
_Area[i].Partial = _Area[i].width * _Area[i].height;
调试从不停止它们我可以认为这条线没有被引用。
这是我的集合视图模型:
public class CollectionVM_Area : BindableBase
{
private Values_Area _Area = new Values_Area();
public Values_Area Area
{
get { return _Area; }
set { SetProperty(ref _Area, value); }
}
public CollectionVM_Area()
{
_Area.Add(new Area()
{
width=10,
height=11,
});
_Area.Add(new Area()
{
width=5,
height=5,
Partial=1,
});
bool NeedPartial = false;
int i = 0;
while (NeedPartial = false && i < _Area.Count)
{
if (_Area[i].Partida == true)
{
NeedPartial = true;
}
else
{
i++;
}
}
if (NeedPartial==true)
{
_Area[i].Partial = _Area[i].width * _Area[i].height;
NeedPartial = false;
}
else
{
NeedPartial = true;
}
}
}
我的项目是一个UWP,但我认为与列表中的窗体形式没什么不同,任何帮助都表示赞赏。
答案 0 :(得分:0)
您的代码中有两个mistalkes。首先,您的while
- 循环代表比较(=
朝向==
)。因此,您的while条件中的第一项始终评估为false
。其次,你的计算位于循环之外,导致NeedPartial
- 值被设置,但永远不会被读取,我怀疑你想要什么。
为此写下:
bool NeedPartial = false;
int i = 0;
while (NeedPartial == false && i < _Area.Count) // or even simpler: while (!NeedPartial ...)
{
if (_Area[i].Partida == true) // or simply: if (_Area[i].Partida) { ... }
{
NeedPartial = true;
}
else
{
i++;
}
if (NeedPartial==true) // if (NeedPartial) ...
{
_Area[i].Partial = _Area[i].width * _Area[i].height;
NeedPartial = false;
}
else
{
NeedPartial = true;
}
}
答案 1 :(得分:0)
编辑:已回答。
正确的循环是:
bool NeedPartial = false;
int i = 0;
while (!NeedPartial && i < _Area.Count)
{
if (_Area[i].Partida)
{
NeedPartial = true;
}
else
{
i++;
}
if (NeedPartial)
{
_Area[i].Partial = _Area[i].width * _Area[i].height;
NeedPartial = false;
i++;
}
else
{
NeedPartial = true;
}
}
感谢HimBromBeere的帮助。