在二维char数组中有条件地声明数组?

时间:2010-12-11 15:42:47

标签: c# arrays conditional declare

我有一个用四个字符串声明的二维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为true,我想最终得到一个使用string1和string 3的charGroup [2] [5]。

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

3 个答案:

答案 0 :(得分:0)

我没有VM,但我认为这应该有用......

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为true),否则包括右侧。

答案 1 :(得分: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();
}

答案 2 :(得分:-2)

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

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

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

但是为什么,为什么你要将String分开到char[] s? String课程是你的朋友。它希望让你的生活更轻松。