【问题标题】:Conditional declaring arrays in two-dimensional char array?二维char数组中的条件声明数组?
【发布时间】:2011-05-23 23:31:09
【问题描述】:

我有一个用四个字符串声明的二维 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]。

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

【问题讨论】:

  • 您能通过示例解释您的问题吗?
  • 我在描述中加了一点肉。希望够了。

标签: c# arrays conditional declare


【解决方案1】:

你想要的方式就像一个列表,所以最好通过列表实现,然后通过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】:

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

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

【讨论】:

  • 那会添加空数组吗? IOW,charGroup 数组中是否会有四个锯齿状数组,其中一些可能是长度为零的数组,或者是确切数量的数组?
【解决方案3】:

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

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

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

但是为什么,哦,你为什么要把 String s 分成 char[] s? String 类是你的朋友。它想让您的生活更轻松。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    相关资源
    最近更新 更多