C# - System.Boolean []打印在屏幕上

时间:2018-03-27 03:52:25

标签: c# .net boolean

using System;
public class test 
{
public static bool CapResult;
public static bool[] CapCover = {CapResult};
public static bool[] BoolWallet = {false};
public static int i = -1;

public static void Main()
{
    string meString = "I am a Little string";
    CapCheck(meString);

}
public static void CapCheck(string inputAnc)
{
    inputAnc = inputAnc.Replace(" ", "");
    char[] input = inputAnc.ToCharArray();
    CapSis(input);
}

public static void CapSis(char[] input)
{
    i++;
    if (i <= input.Length - 1)
    {
        CapResult = Char.IsUpper(input[i]);

   Array.Copy(CapCover,CapCover.GetLowerBound(0),BoolWallet,BoolWallet
    .GetLowerBound(0),1);
        Console.WriteLine(BoolWallet);
        CapSis(input);
    }
     }
    }

我不明白什么是错的。 Console.WriteLine在屏幕上打印System.Boolean []。我想把bool [] BoolWallet中的元素打印出来。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

试试这个

string[] boolWalletStringArray = BoolWallet.Select(b => b.ToString()).ToArray();
Console.WriteLine(string.Join(", ", boolWalletStringArray));

答案 1 :(得分:0)

您收到该错误的原因是此行未指定数组中的位置,它是数组本身:

Console.WriteLine(BoolWallet);

这相当于:

Console.WriteLine(BoolWallet.ToString());

这将输出:

System.Boolean[]

...因为这是BoolWallet可以提出的最佳字符串表示形式。您可以将自己的转换实现为string,但我认为您只需要这样:

Console.WriteLine(BoolWallet[i]);

其他一些建议:

  • 从零开始计数,而不是-1。在迭代时,然后递增,
  • CapSis(input); - 从CapSys方法中删除此行,此处不需要递归,而是使用for循环。递归不是一个好的选择,如果你确实选择了递归,不要使用全局变量来检查你在字符串中的位置(如果其他东西意外地重置了那个变量怎么办? - 无限循环!)
  • 稍微研究一下数组。当你掌握了它们(并掌握它们很重要)时,看看List和lambdas - 它让这种事情变得异常简单(参见@ Myr的回答)
  • 祝你学习编程好运!