坚持这个..你能解释一下发生了什么吗?或者给我任何链接!
String s1="C# Example";
Char[] s3 = s1.ToCharArray();
Console.WriteLine("S3 : {0}",s3);
我想显示转换后的角色。显示的输出是 System.Char [] 。现在我需要做一些改变,但那是什么?
有两种可能。
1)我需要将其更改为字符串,然后才能进入打印。
或者
2)我需要通过定义索引来打印它,(即)s3 [0];
我是对的。还有更多吗?
答案 0 :(得分:3)
解决方案A:
如果要在控制台上单独显示字符,则需要单独获取每个字符并使用循环显示它。
foreach(char ch in s3)
{
Console.WriteLine("S3 : {0}", ch);
}
或,使用for-loop,
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循环。
答案 1 :(得分:2)
对发生的事情的解释:
Console.WriteLine("{0}", s3)
来电s3.ToString()
。
ToString()
未在System.Array
类型中重写,因此调用了Object.ToString()
。
s3.GetType().ToString()
并输出System.Char[]
。
答案 2 :(得分: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]);
}
给出了所需的输出
答案 3 :(得分:0)
char [] str = new char[20];
假设str是字符数组,我们需要显示它。执行以下操作(假设您在str使用循环中输入内容):
Console.WriteLine("The string is: {0}", string.Join("",str));
此处,str中的每个字符都会被连接并显示。
答案 4 :(得分:0)
好的答案,以及 @abatishchev 的很棒解释,为什么WriteLine()
打印System.Char [] >
我想添加一个附加的解决方案,因为在WriteLine()
中使用循环看起来会令人困惑,并且不太悦耳。为了提高可读性,您可以使用new string()
在此示例中,它看起来像这样:
String s1="C# Example";
Char[] s3 = s1.ToCharArray();
Console.WriteLine("S3 : {0}",new string(s3));