using System;
using System.Collections.Generic;
using System.Text;namespace StudyTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string[,] a = new string[,] { { "成都", "绵阳" }, { "德阳", "自贡" }, { "内江" ,"乐山"} };            foreach (string i in a)           //问题1
            {
                Console.WriteLine(i);
            }            foreach (string i in a[0,1])      //问题2
            {
                Console.WriteLine(i);
            }
        }
    }
}作了个小试验,问题1那里的答案是输出二维数组中的所有元素,但问题2中的答案为什么不是"绵阳"而是"绵""阳"呢?

解决方案 »

  1.   

    a是个2维数组,你遍历他是取其中的元素。
    a[0,1]是a这个2为数组里面的一个元素, "绵阳"。
    这个元素是string类型的。
    如果用foreach循环他的话,那么默认是循环的这个string里面的char[],就是遍历里面的每个字符了。
      

  2.   

       foreach (string i in a[0,1])      //问题2 
                { 
                    Console.WriteLine(i); 
                } 
    这里你不会报错吗?
    既然指定了下标值,取绵阳,应该是
     foreach (char i in a[0,1])     
                { 
                    Console.WriteLine(i); 
                } 
      

  3.   

    a[0,1] =“绵阳”
     
    你等于foreach 了 绵阳  当然给你 “绵”“阳”了;
      

  4.   


    果然是这样,书上没说明白,谢了!
    另外foreach (string i in a[0,1]) 里面的string确实要改为char,测试的时候忘记改过来了,哈哈~