假设我有一些遗留代码,除非发现错误,否则无法更改,并且它包含以下代码:
bool data[32];
memset(data, 0, sizeof(data));
Run Code Online (Sandbox Code Playgroud)
这是bool将数组中的所有false值设置为值的安全方法吗?
更一般地,是安全的memset一bool对0,以使其价值false?
是否保证可以在所有编译器上运行?或者我是否要求修复?
有没有简洁的方法在C#中循环使用true/false?
我在单元测试中有大约20行代码我宁愿不重复切换一个布尔值true/false.
我可以把它分解成一个函数并调用它两次,但是meh.这个代码感觉更像是在迭代可能的值而不是使用不同的参数执行不同的操作.即使我有一个函数,我更喜欢循环可能值的语法,而不是只调用它两次.
我可以for像这样写一个循环......
bool toggle;
for (int i = 0; i < 2; i++)
{
toggle = i == 1;
}
Run Code Online (Sandbox Code Playgroud)
但这似乎不是很干净.
我喜欢这种语法:
for (bool b : { false, true }) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
但它看起来不会用C#编译.
编辑:
遵循Jeroen关于本地功能和Dmitry答案的建议,这是我走的路线:
[TestMethod]
public void GetAndSetValue()
{
foreach (bool toggle in new [] { false, true })
{
GetAndSetValue(toggle);
}
void GetAndSetValue(bool toggle)
{
// details not important
}
}
Run Code Online (Sandbox Code Playgroud)
合理的编码员可以辩论循环读取是否比两个函数调用更容易:
GetAndSetValue(false);
GetAndSetValue(true);
Run Code Online (Sandbox Code Playgroud)
我更喜欢这个循环,所以我会滚动它直到有人抱怨.干杯!
我想用bool flagtrue first和false second 执行相同的任务两次.是否有一种优雅的方式(可能使用循环)?
我的想法是做类似以下的事情,但这是一个太复杂的方式.
bool flag = true;
for(int i = 0; i < 2; ++i, flag = !flag)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)