Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 多行字符串中的新行_C#_String_Multiline - Fatal编程技术网

C# 多行字符串中的新行

C# 多行字符串中的新行,c#,string,multiline,C#,String,Multiline,试图重写我的一个类中的tostring return string.Format(@" name = {0} ID = {1} sec nr = {2} acc nr = {3}", string, int, int ,int); // types 但问题是,打印出来的结果并不一致: name = test

试图重写我的一个类中的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

如果在前面添加空格,它将以这种方式打印

我通常是这样做的

   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);

@在字符串关闭标准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); 

不,这是您在其中的所有空间。

来自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
*/

其中,值是有效的字符串集合,因此它是一个解决方案,但如果没有缩进,代码看起来很难看。你能做得更好吗?@Zka:不太好,这是你能得到的最漂亮的东西:(感谢您提供的替代方案,它看起来更好,而且对我来说非常易于管理。另一种替代方案是将常量从代码中重构到资源文件中。这还有一个额外的好处,即可以轻松地进行多个翻译。实际上,这是可行的,但我确实需要多行,因为需要添加更多信息让它排得很长。@leppie:对不起,为什么Windows不友好?\n不是Windows上的标准换行符。我知道有些控件在你得到它们之前无法工作\n\r。@leppie:谢谢,我主要是服务器端的,所以没有注意到。+1无效。这个答案有什么问题吗?我承认这不仅仅是一个原因,而不是一个解决方案。是的,我应该这样做我在这个答案上花了更多的精力。我犯了错。有趣的是,我从来没有想到过
String.Join(Environment.NewLine, value.Select(i => i)