关于字符串和转义字符的混淆

Confusion regarding string and escape characters

假设创建了一个字符串,如下所示: 字符串 s="This \n is new staring";

在上面的代码中,我们得到了一个 \n,它是一个换行符,可以通过双引号前的 @ 或使用 \.

进行转义

我的困惑是:

一个。假设此值是从输入框中获取到代码中的,则 \n 被视为普通字符串(自动获取 \n)而不是换行符。

b。同样,如果我们将文本框值分配给多行文本框或标签,该值将被视为 \n 并输出为 \n 而不是换行符。

请问这个概念有参考吗

转义字符在编译时处理。这意味着您程序的编译版本不包含任何转义字符。

@"" 表示法也是如此:它只是改变了您在编写程序时为字符串提供数据的方式,并不包含在编译后的程序中。

在文本框中输入的数据不经过转义字符处理,所以输入\n实际上是一个包含字符'\''n'的字符串。

基础知识:

在内存中你可能有这些字节:

0x41, 0x42, 0x0a, 0x00

同一个内存以十进制形式出售,读为

65, 66, 10, 0

如果截获作为ASCII字符你有

'A', 'B', Newline, EndOfString

如果你想在源代码中表达这些,你可以这样写:

string s = "AB\n"; // note: 0x00 is appended automatically

编译器将进行所有转换并以第一个示例中的字节结束。所以“\n”只是一种以方便的方式在字符串中包含特殊字符 Newline / Byte 0x0A 的方法。

如果您通过文件或套接字或其他任何方式从另一个应用程序接收到某些内容,您实际上会收到 字节,您的代码可能 解释 以上述方式之一。

请注意:在 .Net 中我们有 UTF 字符串,其中每个字符实际上使用 16 位/两个字节,所以上面的解释对 C 是好的但完全对C#。但是基本原理是一样的。