在此页面上,C#的示例代码包含以下代码,其中cardNumber是一个字符串:
cardNumber.Select(c => c - '0').ToArray()
现在,这看起来要做的是从cardNumber中的每个char中减去0,将每个char作为int返回,然后将它们放入一个数组中.我的问题,特别是关于c - '0'这段代码的问题是:
1)为什么这样做?什么是潜在的行为/解释?
2)为什么要这样做而不是使用Int32.Parse?
注意:这是C中的类似问题,这个问题可能有相同/相似的解释.
它减去了unicode代码点.所以如果c像9操作那样的话 '9' - '0'.9is 57和0is 的代码点48,因此它将执行57 - 48哪些结果9.
我能想到这样做的唯一原因int.Parse就是速度 - 这是一个算术运算,它比任何int.Parse时候都要快得多.