9

クラスの 1 つで tostring をオーバーライドしようとしています。

 return string.Format(@" name = {0}
                         ID = {1}
                         sec nr = {2}
                         acc nr = {3}", string, int, int ,int); // types

しかし、問題は、印刷時に結果が整列していないということです:

name = test
                                   ID = 42
                                   sec nr = 11
                                   acc nr = 55

\n を追加しようとすると、フォーマットせずに出力されます。マルチラインに使用している @"" と関係があると思います。

印刷したい:

name = test
ID = 42
sec nr = 11
acc nr = 55
4

5 に答える 5

14

前にスペースを追加すると、そのように印刷されます。

普段はこのようにしています。

   return string.Format(
@" name = {0}
 ID = {1}
 sec nr = {2}
 acc nr = {3}", string, int, int ,int); // types

更新:おそらくよりきれいな代替手段:

string[] lines = 
{
  " name = {0}",
  " ID = {1}",
  " sec nr = {2}",
  " acc nr = {3}"
};

return string.Format(
         string.Join(Environment.Newline, lines), 
         arg0, arg1, arg2, arg3);
于 2010-04-13T09:44:31.023 に答える
6

文字列の前の @ は、標準の C# 文字列フォーマットを無効にします。

 return string.Format(" name = {0}\n ID = {1} \n sec nr = {2} \n acc nr = {3}", 
                      string, int, int ,int); // types

@や\n、\t などは使用できません。

編集

これは - 私見 - それが得られるのと同じくらい良いです

 return string.Format("name = {0}\n" + 
                      "ID = {1}\n" + 
                      "sec nr = {2}\n" + 
                      "acc nr = {3}", 
                       string, int, int ,int); 
于 2010-04-13T09:44:50.093 に答える
4

msdn からの解決策:

// Sample for the Environment.NewLine property
using System;

class Sample 
{
    public static void Main() 
    {
    Console.WriteLine();
    Console.WriteLine("NewLine: {0}  first line{0}  second line{0}  third line",
                          Environment.NewLine);
    }
}
/*
This example produces the following results:

NewLine:
  first line
  second line
  third line
*/
于 2010-04-20T09:00:23.463 に答える
1
String.Join(Environment.NewLine, value.Select(i => i)

ここで、値は文字列のコレクションです

于 2015-04-09T12:11:49.163 に答える
0

いいえ、それはあなたがそこに持っているすべてのスペースです。

于 2010-04-13T09:45:41.623 に答える