关于c#:Verbatim string literal concat?


Verbatim string literal concat?

我一直在阅读关于逐字字符串的文字和转义序列。我现在好奇的是,在使用逐字字符串文本时,是否可以转义并说从数据库调用动态源?

例如,如何实现以下目标?

1
2
3
4
5
6
7
8
string jsFunc = @"
    (function()
        {
            var image = 'Images/"
+ {sqlConn[2]} +"';
            var img = document.getElementbyId('img1');
            img.src = image;
        }
     );"
;

谢谢


您有3个选项:

1
2
3
4
5
6
7
8
string jsFunc = $@"
    (function()
        {{
            var image = 'Images/{sqlConn[2]}';
            var img = document.getElementbyId('img1');
            img.src = image;
        }}
     );"
;

(注意在@之前的$和删除字符串连接部分,这将把它变成一个内插字符串。还需要注意的是,为了避免绊倒底层的string.Format,我不得不将支撑加倍。)

或者:

1
2
3
4
5
6
7
8
string jsFunc = string.Format(@"
    (function()
        {{
            var image = 'Images/{0}';
            var img = document.getElementbyId('img1');
            img.src = image;
        }}
     );"
, sqlConn[2]);

这是很好的字符串格式。这里同样是关于将大括号加倍。

或者:

1
2
3
4
5
6
7
8
string jsFunc = @"
    (function()
        {
            var image = 'Images/"
+ sqlConn[2] + @"';
            var img = document.getElementbyId('img1');
            img.src = image;
        }
     );"
;

(注意,在串接之后,我在字符串的其余部分之前添加了一个新的@,并且还删除了大括号。)