char 0减去什么呢?

Jam*_*uld 1 c#

此页面上,C#的示例代码包含以下代码,其中cardNumber是一个字符串:

cardNumber.Select(c => c - '0').ToArray()

现在,这看起来要做的是从cardNumber中的每个char中减去0,将每个char作为int返回,然后将它们放入一个数组中.我的问题,特别是关于c - '0'这段代码的问题是:

1)为什么这样做?什么是潜在的行为/解释?

2)为什么要这样做而不是使用Int32.Parse?

注意:这是C中的类似问题,这个问题可能有相同/相似的解释.

Dav*_*ych 5

它减去了unicode代码点.所以如果c9操作那样的话 '9' - '0'.9is 570is 的代码点48,因此它将执行57 - 48哪些结果9.

我能想到这样做的唯一原因int.Parse就是速度 - 这是一个算术运算,它比任何int.Parse时候都要快得多.