关于C#的续行符

众所周知,如果你需要在代码中定义一个较长的字符串,首先我会想把它们放在多行上(因为放在一行上会不便于阅读),这样代码即美观又便于阅读;这就需要续行符了。

在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";

posted on 2009-02-10 09:48  Frank.Cui  阅读(4050)  评论(0编辑  收藏  举报