2

これに行き詰まった..何が起こっているのか説明してもらえますか? または私にリンクを教えてください!

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

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

変換したキャラクターを表示したい。表示される出力はSystem.Char[]です。今、私はいくつかの変更を行う必要がありますが、それは何ですか?

それは2つの方法で可能です。

1)印刷する前に、文字列に変更する必要があります。

または

2) インデックス (すなわち) s3[0]; を定義して、Char で出力する必要があります。

私は正しいですか。もっと何か?

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

これまでの良い答えと、System.Char[] を印刷する理由に関する@abatishchevからの優れた説明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 に答える