在c#中,为什么字符串由(byte)'组成 ' 不含 ' '?

问题描述 投票:0回答:1

我刚刚发现下面的代码返回 false:

((byte)'\n').ToString().Contains('\n') // -> false

虽然这个返回 true:

'\n'.ToString().Contains('\n') // -> true

这是为什么呢?

(byte)'\n'
'\n'
的字符代码从
'\n' == 10 < 256
开始是相同的,所以无论编码如何,存储的值都应该相同,两种情况下最高位都是0...

我不知道为什么会发生这种情况,因为对于类型化语言来说相对较新。

c# string char byte
1个回答
0
投票

'\n'.ToString()
char
\n
转换为字符串,结果是一个带有换行符的单字符字符串。 当你检查它是否包含换行符时,结果自然是
True

(byte)'\n').ToString()
首先将
char
\n
转换为
byte
,即8位整数值10。然后将
10
转换为字符串,结果为
"10"

该字符串不包含换行符,因此您会得到
False

© www.soinside.com 2019 - 2024. All rights reserved.