在C#中是否有一种简洁的方式来循环 true/false 值?
我有大约20行代码在单元测试中,我不想复制来切换一个布尔值的 true/false。
我可以将它拆分成一个函数并调用两次,但是感觉代码更像是迭代可能的值,而不是执行具有不同参数的不同操作。即使我有了一个函数,我也更喜欢循环遍历可能的值的语法,而不仅仅是调用两次。
我可以这样写一个 for
循环...
bool toggle;
for (int i = 0; i < 2; i++)
{
toggle = i == 1;
}
但这似乎不是很规范。 我喜欢以下语法: 链接
for (bool b : { false, true }) { /* ... */ }
但是它似乎不能在C#中编译。
编辑:
根据Jeroen关于本地函数和Dmitry的答案的建议,我选择了以下路线:
[TestMethod]
public void GetAndSetValue()
{
foreach (bool toggle in new [] { false, true })
{
GetAndSetValue(toggle);
}
void GetAndSetValue(bool toggle)
{
// details not important
}
}
有经验的程序员可以就循环和两个函数调用哪个更易读进行辩论:
GetAndSetValue(false);
GetAndSetValue(true);
我更喜欢使用循环,因此我会一直使用它,直到有人抱怨。干杯!
DoStuff(true)
和DoStuff(false)
比for
循环看起来更美观。解析循环正在执行的操作所需的认知负荷肯定不值得这样做。 - DavidG