在.NET中使用文本块初始化字符串的语法是什么?

时间:2009-05-14 14:15:20

标签: c# .net text

我正在编写单元测试,并且不记得使用大块格式化文本初始化字符串的语法。

string _testData = "a couple screens worth of text data here
and I need to preserve the formatting
such as line breaks,
etc.";

5 个答案:

答案 0 :(得分:15)

在文字前添加@

string _testData = @"a couple screens worth of text data here
and I need to preserve the formatting
such as line breaks,
etc.";

答案 1 :(得分:10)

使用@ literal表示字符串类型。

string _testData = @"a couple screens worth of text data here
and I need to preserve the formatting
such as line breaks,
etc.";

MSDN:“逐字字符串文字以@开头,并且也用双引号括起来。逐字字符串的优点是不处理转义序列,这使得它易于编写,例如,完全限定的文件名。要在@ -quoted字符串中包含双引号,请加倍。“

答案 2 :(得分:5)

正如其他人所说,这是

    string _testData = @"a couple screens worth of text data here
and I need to preserve the formatting
such as line breaks,
etc.";

这称为逐字字符串文字。另一个影响是反斜杠不再用于转义任何东西 - 这使得它对正则表达式和Windows文件路径很有用。

双引号是通过加倍实现的。例如,在字符串中获取x"y

string verbatim = @"x""y";
string regular = "x\"y";

答案 3 :(得分:1)

您可能应该创建应用程序读取并存储在内存中的文件资源,而不是使用静态格式化文本来混淆代码。这样,如果您需要更改它或格式化不同的方式,您可以进行更改,而无需进一步触摸和混乱您的代码。

答案 4 :(得分:0)

我同意Wayne Hartman的说法 - 只需将您的大文本存储为文本文件并将其读入字符串进行测试,例如:

 string testData = File.ReadAllText(fileToRead);
    //Unit test using the testData

这里没有任何逻辑可以阻碍你的其他测试。单元测试仍然关注您的功能,它只是使用文本文件来方便地存储大字符串。