0

我有一个用四个字符串声明的二维 char 数组。

private static string string1 = "abcde";
private static string string2 = "ABCDE";
private static string string3 = "12345";
private static string string4 = "67890";

public string selectChars(bool includeOne, bool includeTwo, bool includeThree, bool includeFour)
{
   char[][] charGroups = new char[][] 
   {
       string1.ToCharArray(),
       string2.ToCharArray(),
       string3.ToCharArray(),
       string4.ToCharArray()
   };
}

我想声明和初始化数组,以便字符串 add 是基于四个 bool 标志的条件。例如,如果 includeOne 和 includeThree 为真,我希望得到一个使用 string1 和 string 3 的 charGroup[2][5]。

(这是现有代码,我不想从根本上更改其余代码。如果我可以有条件地在该块中声明数组,我就完成了。)

4

3 回答 3

0

我没有虚拟机,但我认为这应该可以工作......

private static string string1 = "abcde";
private static string string2 = "ABCDE";
private static string string3 = "12345";
private static string string4 = "67890";

public string selectChars(bool includeOne, bool includeTwo, bool includeThree, bool includeFour)
{
   char[][] charGroups = new char[][] 
   {
       include1 ? string1.ToCharArray() : new char[0],
       include3 ? string2.ToCharArray() : new char[0],
       include3 ? string3.ToCharArray() : new char[0],
       include4 ? string4.ToCharArray() : new char[0]
   };
}

如果您想要做的就是将字符串作为字符数组包含在设置了它们各自的标志的情况下,那么我认为这可以解决问题。它使用条件运算符包含“:”的左侧(如果 includeX 为真),否则包含右侧。

于 2010-12-11T21:42:30.797 回答
0

你想要的方式就像一个列表,所以最好通过列表实现它,然后通过返回一个数组ToArray

public string selectChars(bool includeOne, bool includeTwo, bool includeThree, bool includeFour)
{
        List<char[]> chars = new List<char[]>();
        string string1 = "";
        if (includeOne)
            chars.Add(string1.ToCharArray());
        if(includeTwo) ....

        char[][] charGroups = chars.ToArray();
}
于 2010-12-12T07:16:41.777 回答
-2

1)计算需要添加多少字符串(有多少标志为真)。

2)char[][] charGroups = new char[count][];(可能需要char[][count];我的睡眠时间很少)

3)初始化索引为0;对于每个标志,如果已设置,则将适当的标志char[]放入该索引中,并增加索引。

但是为什么,哦,你为什么要把Strings 拆成char[]s 呢?String班级是你的朋友。它想让你的生活更轻松。

于 2010-12-11T16:29:24.910 回答