多行字符串中的新行

Mil*_*lan 8 c# string multiline

试图覆盖我的一个类中的tostring.

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

但问题是,打印出来时结果不对齐:

name = test
                                   ID = 42
                                   sec nr = 11
                                   acc nr = 55
Run Code Online (Sandbox Code Playgroud)

试图添加\n只是打印出来而不需要格式化.猜测它与@""有关,我正在使用它来进行多线程.

想要打印出来:

name = test
ID = 42
sec nr = 11
acc nr = 55
Run Code Online (Sandbox Code Playgroud)

lep*_*pie 14

如果在前面添加空格,则会以这种方式打印.

我通常这样做.

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

更新:也许是一个更漂亮的选择:

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

return string.Format(
         string.Join(Environment.Newline, lines), 
         arg0, arg1, arg2, arg3);
Run Code Online (Sandbox Code Playgroud)

  • 这是有效的,所以这是一个解决方案,但代码看起来很难看,没有缩进.一个人可以这样做"更好"吗? (2认同)

Bin*_*ier 6

字符串前面的@关闭标准C#字符串格式,试试

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

你不能使用@ 使用\n,\ t等.

编辑

这是 - 恕我直言 - 尽可能好

 return string.Format("name = {0}\n" + 
                      "ID = {1}\n" + 
                      "sec nr = {2}\n" + 
                      "acc nr = {3}", 
                       string, int, int ,int); 
Run Code Online (Sandbox Code Playgroud)