【发布时间】:2014-04-04 18:06:30
【问题描述】:
我有 4 个布尔参数,用于清理使用 Nport 从刻度获得的字符串。我必须在框架 3.5 VS 2008 中执行此操作。
我有 16 种可能的输入组合:
- 真真真真真假
- 真真真假
- 真真假真
- 真真假假
- 真假真真
- 真假真假
- 真假假真
- 真假假假
- 假真真真假
- 假真真假
- 假真假真
- 假真假假
- 假假真真
- 假假真假
- 假假假真
- 假假假假
对于每种情况,我必须对我提供给方法的字符串执行不同的操作。
但是,如果不编写许多相互交织的 if 和 else 子句,我该怎么做呢?
我可以在屏幕上打印出来,但据我所知,开关是不可能的,而且框架 3.5 中还不存在元组。
public void CompositionBooleans(string result, int counter)
{
if (counter == 0)
return;
bool[] booleans = new bool[2] { true, false };
for (int j = 0; j < 2; j++)
{
StringBuilder stringBuilder = new StringBuilder(result);
stringBuilder.Append(string.Format("{0} ", booleans[j].ToString())).ToString();
if (counter == 1)
Console.WriteLine(stringBuilder.ToString());
CompositionBooleans(stringBuilder.ToString(), counter - 1);
}
}
这是我用来打印的代码。
但我需要这些情况,并且使用 if else 结构将永远花费并且根本不灵活。 有人知道怎么做吗?
【问题讨论】:
-
为什么不直接将布尔数组传递给 strig.format,它接受一个对象 []。但也许我理解不正确,这不是你想要的。
-
我会检查这个。作为我需要的示例,如果 startchar=3 和 stopchar=2 已填写,而其他 2 个为空,我可以说。我有真,假,假,真。然后将子字符串从 startchar 带到 stopchar。