有一个简单的方法来创建一个多行字符串文字在c# ?

这是我现在拥有的:

string query = "SELECT foo, bar"
+ " FROM table"
+ " WHERE id = 42";

我知道PHP

<<<BLOCK

BLOCK;

c#有类似的东西吗?


当前回答

如果你不想要空格/换行,字符串加法似乎可以工作:

var myString = String.Format(
  "hello " + 
  "world" +
  " i am {0}" +
  " and I like {1}.",
  animalType,
  animalPreferenceType
);
// hello world i am a pony and I like other ponies.

如果你愿意,你可以在这里运行上面的程序。

其他回答

添加多行:使用@

string query = @"SELECT foo, bar
FROM table
WHERE id = 42";

在中间添加字符串值:使用$

string text ="beer";
string query = $"SELECT foo {text} bar ";

多行字符串中间添加值:使用$@

string text ="Customer";
string query = $@"SELECT foo, bar
FROM {text}Table
WHERE id = 42";

你可以使用@和""。

        string sourse = @"{
        ""items"":[
        {
            ""itemId"":0,
            ""name"":""item0""
        },
        {
            ""itemId"":1,
            ""name"":""item1""
        }
        ]
    }";

你可以在字符串前面使用@符号来形成一个逐字逐句的字符串字面量:

string query = @"SELECT foo, bar
FROM table
WHERE id = 42";

使用此方法时,您也不必转义特殊字符,除了Jon Skeet的回答中所示的双引号。

我还没有见过这个,所以我会张贴在这里(如果你有兴趣传递一个字符串,你也可以这样做)。其思想是,您可以将字符串分成多行,并以您希望的任何方式添加自己的内容(也在多行上)。这里“tableName”可以传递到字符串中。

    private string createTableQuery = "";

    void createTable(string tableName)
    {

         createTableQuery = @"CREATE TABLE IF NOT EXISTS
                ["+ tableName  + @"] (
               [ID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
               [Key] NVARCHAR(2048)  NULL, 
               [Value] VARCHAR(2048)  NULL
                                )";
    }

附带说明一下,在c# 6.0中,你现在可以将插值字符串与逐字字符串字面值结合起来:

string camlCondition = $@"
<Where>
    <Contains>
        <FieldRef Name='Resource'/>
        <Value Type='Text'>{(string)parameter}</Value>
    </Contains>
</Where>";