我在这里简单介绍一下C#支持的字符串形式:
1.规则字符串(regular-string-literal),所谓规则字符串就是包含在双引号之间的0个或者多个字符所组成的字符串(比如:"literal"),并且里面可以还有我们经常遇到的转义字符("\n","\t"...),规则字符串中的这些转义字符不会被当做正常的字符输入了,我个人的理解是:所谓转义,就是把字符本来的意思改变了,例如\a,a字符本来只是一个简单的字符,但是加上了'\'就变成了警告声音
2.逐字字符串
我们单单从字面就可以看出,"逐字"很可能就是一个字符一个字符的,不错,我们完全可以理解为就是一个字符一个字符(双引号除外,等下单独说)的添加到字符串变量中(注意:字符串的不可变性,我们只是这么理解),即便里面有我们上面提到的用于转义的反斜线'\',可是我们不是说了有反斜线就会改变字符原本的意义吗,为什么这里不是呢?答案就是逐字字符串使用了'@'这个字符,一旦使用了这个字符,反斜线就失去了转义的功能,而是当做一个普通的字符收录到字符串中.
说到这里我们就有点奇怪了,@有这么大的能力?确实是,一旦在字符串的前面使用了@就有了一下的功能:
a.取消转义,例如:@"\a" 输出结果:\a 而不是"警告声"了
i.在这里有个更重的用处就是在使用"路径"时,例:string path ="C:\\test\\"-->容易出错;而我们使用了@就可以直接使用string path=@" rel="nofollow"C:\test\";
b.实现字符串换行,我们知道普通字符串是包在双引号中的,而且必须在同一行,一旦换行就会报错,但是有了@,就可以了,
例如:string str=@"我是一个
字符串";
c.@既然取消了转义,@"\"",肯定不能输出\",因为"是特殊的,那我们怎么输出双引号呢?答案是:我们使用""代表一个引号("),所有要输出"Hello",我们就要写成string str=@"""Hello""";