2

被这个卡住了..你能解释一下里面发生了什么吗?或给我任何链接!

String s1="C# Example";
Char[] s3 = s1.ToCharArray();

Console.WriteLine("S3 : {0}",s3);

我想显示转换后的字符。显示的输出是System.Char[]。现在我需要做一些改变,但那是什么?

有两种可能。

1)我需要在打印之前将其更改为字符串。

或者

2)我需要通过定义索引用Char打印它,(即)s3 [0];

我对么。更多的东西?

4

5 回答 5

4

发生情况的解释:

  • Console.WriteLine("{0}", s3)来电s3.ToString()
    • 因为 WriteLine() 在每个参数上调用 ToString()
  • 方法ToString()在类型中未被覆盖,System.Array因此Object.ToString()被称为。
    • 因为 Char[] 是 System.Array 并且所有类型都继承自 Systen.Object。
  • 相当于s3.GetType().ToString()和 输出System.Char[]
    • 因为这是默认实现。子类型可以覆盖它。例如, System.String 可以, StringBuilder 也可以。
于 2014-12-18T06:50:50.037 回答
3

解决方案 A:

如果要在控制台上单独显示字符,则需要分别获取每个字符并使用循环显示它。

foreach(char ch in  s3)
{
    Console.WriteLine("S3 : {0}", ch);
}

或者,使用 for 循环,

for (int i = 0; i < s3.Length; i++)
{
    Console.WriteLine("S3 : {0}", s3[i]);
}

解决方案 B: 我更喜欢另一种方法,这可能对您没有帮助,但对于那些总是寻求更好解决方案的人来说,它也是一种选择。

使用扩展方法

在您的解决方案中使用扩展方法添加此类,

public static class DisplayExtension 
{
    public static string DisplayResult(this string input)
    {
        var resultString = "";
        foreach (char ch in input.ToCharArray())
        {
            resultString += "S3 : " + ch.ToString() + "\n";
        }
        return resultString;
    }
}

并像这样从您的程序中调用DisplayResult()扩展方法,

Console.WriteLine(s1.DisplayResult());

这将为您提供相同的结果,但扩展了代码的可重用性,而无需为所有重复的情况编写 for 循环。

于 2014-12-18T06:45:16.830 回答
1
Console.WriteLine("S3 : {0}",s3);

给出结果 s3.ToString() 结果System.Char[]

而是创建一个 for 循环,例如:

Console.Write("S3 :"); 
for(int i=0; i<s3.Length; i++)
{
    Console.Write(s3[i]);
}

给出所需的输出

于 2014-12-18T06:48:46.150 回答
1

到目前为止,答案很好, @abatishchev很好地解释了为什么要打印 System.Char[]WriteLine()

我想添加一个额外的解决方案,因为在你的内部使用循环WriteLine()会看起来很混乱,而且它不是很顺眼。为了更好的可读性,您可以使用new string()

在此示例中,它看起来像这样:

String s1="C# Example";
Char[] s3 = s1.ToCharArray();

Console.WriteLine("S3 : {0}",new string(s3));
于 2018-08-18T00:14:58.560 回答
1
char [] str = new char[20];

假设 str 是字符数组,我们需要显示它。执行以下操作(前提是您使用循环在 str 中输入了一些内容):

Console.WriteLine("The string is: {0}", string.Join("",str));

在这里,str 中的每个字符都被连接并显示出来。

于 2018-03-09T02:00:00.090 回答