A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 钱灿 中级黑马   /  2012-7-6 21:06  /  1825 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 钱灿 于 2012-7-6 22:34 编辑

@" how: are you? "   不等价于  \" how: are you? \"  (和逐字指定文件名弄混淆了……呵呵)
也不等价于
@" how:
are
you? "
有点明白了……{:soso_e100:}

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

8 个回复

倒序浏览
不一样,最后一个包含换行符,和上面的两个不一样。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
古古头 发表于 2012-7-6 22:04
不一样,最后一个包含换行符,和上面的两个不一样。

换行符不是忽略掉了吗
回复 使用道具 举报
古古头 发表于 2012-7-6 22:04
不一样,最后一个包含换行符,和上面的两个不一样。

还有个问题是:
string a;

a = @"how are you"; 为什么测试时等价于 a = "how are you";
这是怎么一回事?
回复 使用道具 举报
@符号表示编译器将逐字解析此字符串常量。
也就是说,这个字符串在源文件里是什么样就解析成什么样(除了双引号,如果加了@符号只能用两个双引号表示一个双引号),
而其它的字符串,它原本是什么解析出来还是什么,不可能像不加@符号时,\t表示什么,\n表示什么那样了。
你说的@"how are you"与"how are you"在解析式都是逐字解析的(因为没有'\'转义符什么的)

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
转义符和原义符

两者都是针对字符串而言的,他们各有各的用途
先介绍一下转义符吧(之前我其他地方的回帖有,直接粘过来):
·一种特殊的字符常量;
·以反斜线"\"开头,后跟一个或几个字符。
·具有特定的含义,不同于字符原有的意义,故称“转义”字符。
·主要用来表示那些用一般字符不便于表示的控制代码。
·它的作用是消除紧随其后的字符的原有含义
·用一些普通字符的组合来代替一些特殊字符,由于其组合改变了原来字符表示的含义,因此称为“转义”
·用可以看见的字符表示那不可以看见的字符, 如'\n'表示换行


常用的转义字符及其含义:
\’ 单引号
\” 双引号
\\ 反斜杠
\0 空
\a 警告(产生峰鸣)
\b 退格
\f 换页
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符

以上列的是转义符,其中前三个是因为在字符串中只是要显示斜杠后的东西,但编译器通不过,因此要使用斜杠转义,而如果直接在字符串前加@就不需要斜杠转义,@就是原义字符
后面的一些转义符就有特殊用途;

希望对你有所帮助,不足请指正

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
古古头 发表于 2012-7-6 22:21
@符号表示编译器将逐字解析此字符串常量。
也就是说,这个字符串在源文件里是什么样就解析成什么样(除了双 ...

你是对的……:)……谢谢了
回复 使用道具 举报
Console.WriteLine(@" how:
                                are
                                you? "
                            );
这个的话@帮你转义了换行how:
                                are
                                you?
            Console.WriteLine(@" how: are you? ");
这个输出的就是how: are you?
             Console.WriteLine(\" how: are you? \" );
\是转义字符你直接这样写就错了,必须加@或者再加\表示换行

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
@只对紧跟其后的字符串里的字符做转义处理,@后面的在后面的字符串就转义不到了。。。亲。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马