打印从字符串转换的字符数组()时出现问题
本文关键字:问题 数组 字符串 转换 字符 打印 | 更新日期: 2023-09-27 18:34:37
被这个困住了..你能解释一下里面发生了什么吗?或者给我任何链接!
String s1="C# Example";
Char[] s3 = s1.ToCharArray();
Console.WriteLine("S3 : {0}",s3);
我想显示转换的字符。显示的输出是 System.Char[]。现在我需要做一些更改,但那是什么?
这可以通过两种方式实现。
1(我需要将其更改为字符串,然后再打印。
或
2(我需要通过定义索引来用Char打印它,(即(s3[0];
我说的对吗。还有什么事吗?
对发生情况的解释:
-
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也是如此。
解决方案 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 循环。
到目前为止的
答案很好,@abatishchev对WriteLine()
打印系统的原因进行了很好的解释[]
我想添加一个额外的解决方案,因为在WriteLine()
中使用循环看起来会令人困惑,而且不太赏心悦目。为了获得更好的可读性,您可以使用new string()
在此示例中,它如下所示:
String s1="C# Example";
Char[] s3 = s1.ToCharArray();
Console.WriteLine("S3 : {0}",new string(s3));
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]);
}
提供所需的输出
char [] str = new char[20];
假设 str 是字符数组,我们需要显示它。执行以下操作(前提是您在 str 中使用循环中输入一些内容(:
Console.WriteLine("The string is: {0}", string.Join("",str));
在这里,str 中的每个字符都连接并显示。