此代码返回int 49
IEnumerable<int> numbersList = numbers.Select(x => Convert.ToInt32(x));
int sum = numbersList.Sum();
Run Code Online (Sandbox Code Playgroud)
numbers变量是一个值为1的字符串.
如果我使用
numbers.Split(',').Select(x => Convert.ToInt32(x));
Run Code Online (Sandbox Code Playgroud)
然后我得到了正确的答案.我知道split传回一个字符串数组所以我使用了一个单值为1的字符串数组而不是分裂,这也是有用的.
string[] sa = new string[] { "1" }
Run Code Online (Sandbox Code Playgroud)
我的问题是有谁知道为什么使用字符串上的选择返回错误的值?
谢谢.
使用numbers.Select()时将字符串视为集合.它是一个集合,但不是子串的集合,而是一组字符.
你得到的结果就像numbers是一个字符数组,即{ '1' }.
结果Convert.ToInt32('1')是字符代码为'1'49.