C#中foreach遍历int数组为何可用char类型?输出空白原因?
C# foreach遍历int数组使用char类型的疑问解答
1. 为什么允许用char作为迭代变量类型?
C#的foreach语句允许迭代变量类型与数组元素类型不同,只要元素类型能显式转换为迭代变量类型,且目标是值类型。编译器会自动在每次迭代时插入强制转换的代码,相当于把每个int元素手动转成char,所以这种写法是合法的。
2. 为什么输出空白?
你数组里的1、2、3、4对应的是ASCII控制字符,这类字符属于不可打印的系统控制符号(比如(char)1是"标题开始"标记,(char)2是"文本开始"标记),控制台无法显示这类字符,所以看起来是空白。如果换成可打印的ASCII数值(比如65对应'A',97对应'a'),就能看到正常输出:
int[] arr = new int[] { 65, 97, 33 }; foreach (char item in arr) { Console.WriteLine(item); // 输出:A、a、! }
内容的提问来源于stack exchange,提问作者Niyazi Babayev
相关产品推荐
相关产品推荐

