众所周知,如果你需要在代码中定义一个较长的字符串,首先我会想把它们放在多行上(因为放在一行上会不便于阅读),这样代码即美观又便于阅读;这就需要续行符了。
在C/C++中续行符可以用 \ 或二字"括起来的字符串来表示,如:
char* str1 = "string one\
two";
或
char* str2 = "string one"
"two";
在VB中续行符可以用_来表示,如:(VB语法有些忘了,不过续行符_是没错的)
Dim str1 As String
str1="string one"_
"two"
可是到了C#,找遍MSDN也没有找到有关续行符的语法(如果有高手知道还请指点),不过在C#可是用“通用”的字符串“续行符”,如:
string str1="string one"+
"two";
很明显这只是普通的字符串拼接,跟本不是什么续行符,不过C#的编译器是很智能的,将上面的代码编译后生成的IL指令转换为源代码后是这样的:
string str1="string onetwo";
也就是说C#编译器自动将它们连接,并视一个字符串常量了。
再看下面这个例子:
string str1="three";
string str2="string "+"one "+str1;
你会想到编译后生成的源代码是什么吗?
没错,上面的代码编译后生成的IL指令转换为源代码就是:
string str1="three";
string str2="string one "+str1;
最后C#还有一种方法可以定义超长字符串,但这种方法会将回车换行符等视有效字符串;如:
string mailto:str1=@%22string one
two";
上面的代码编译后生成的IL指令转换为源代码就是:
string str1="string one\r\ntwo";