假设有一个字符串创建如下: string s ="这个\ n是新的盯着&#34 ;;
上面的代码我们有一个\ n这是一个新的行字符,可以通过双引号之前的@或使用\来转义。
我心中的困惑是:
一个。假设这个值从输入框中取出到代码中,然后\ n被视为普通字符串(自动获取\ n)而不是新行字符。
湾如果我们将文本框值分配给多行文本框或标签,则该值将被视为\ n并输出为\ n而不是换行符。
请问这个概念是否有任何参考。
答案 0 :(得分:1)
转义字符在编译时处理。这意味着程序的编译版本不包含任何转义字符。
同样适用于@""
表示法:它只是改变了在编写程序时为字符串提供数据的方式,并且不包含在已编译的程序中。
在文本框中输入的数据不会进行转义字符处理,因此输入\n
实际上是一个包含字符'\'
和'n'
的字符串。
答案 1 :(得分:1)
基础知识:
在内存中你可能有这些字节:
0x41, 0x42, 0x0a, 0x00
以十进制表示相同的内存销售为
65, 66, 10, 0
如果 interpteted 为ASCII字符,则
'A', 'B', Newline, EndOfString
如果你想在源代码中表达,你可以写:
string s = "AB\n"; // note: 0x00 is appended automatically
编译器将执行所有转换,并以第一个示例中的字节结束。所以“\ n”只是一种方便的方式将特殊字符Newline
/字节0x0A包含在字符串中。
如果您从其他应用程序,通过文件或套接字或其他任何内容收到某些内容,您实际上会收到字节,您的代码可能会以其中一种方式解释如上所述。
请注意:在.Net中我们有UTF字符串,其中每个字符实际上使用16Bit / 2字节,因此上面的解释对C而言是好的,但对于C#而言不是完全为真。但基本原则是相同的。