class Program
    {
        static void Main(string[] args)
        {
            int a = 10, b = 20;
            Console.WriteLine("a={1},b={0}", a, b);
            Console.ReadLine();
        }
    }class Program
    {
        static void Main(string[] args)
        {
            int b = 10, a = 20;
            Console.WriteLine("a={1},b={0}", a, b);
            Console.ReadLine();
        }
    }
第一段代码 按我的理解 a={1},就是按第二个传值,b={0}就按第一个传值及a=b=20,b=a=10;
但是我把 a和b在定义的时候交换位置, a=20,b=10;这就不能按我的去理解了,在WriteLine("{}")中代表的究竟是怎样的顺序呀?不解...

解决方案 »

  1.   

    Console.WriteLine("a={1},b={0}", a, b);//这里的1,0指的是后面参数的出现顺序索引值,依次是0,1.......n
      

  2.   

    不对哇,我这第一段代码,是a=20,b=10;
    第二段代码 a=10,b=20
      

  3.   

    那a={1},b={0},a的索引值在后面,a应该=20,b=10呀。
      

  4.   

    Console.WriteLine("a={1},b={0}", a, b);
    这句话其实可以转换成这样
    Console.WriteLine("a="+b+","+"b="+a);
    红色的a 和 b 是变量. 黑色的a 和 b 其实是字符串  
      

  5.   

    不对哇,我这第一段代码,是a=20,b=10;
    那a={1},b={0},a的索引值在后面,a应该=20,b=10呀
    -------------------------------------------
    你想的和你那里的都是这个结果 还在想什么呢 (:  (:
     static void Main(string[] args)
            {
                int i = 10,j = 20;
                Console.WriteLine("交换前a={1},b={0}", i, j);
                i = i ^ j;
                j = j ^ i;
                i = i ^ j;
                Console.WriteLine("交换后a={1},b={0}", i, j);
                Console.ReadLine();
            }
    结果:
    交换前a=20,b=10
    交换后a=10,b=20
      

  6.   

    我简单说下吧,楼主理解有个误区,你申明的 int a = 10, b = 20;
    这个叫变量,可以的话你可以用c、d来代替而你 WriteLine("这里面是字符也就是打什么输出什么,都不改的");而{0},{1}相对应的是后面参数的顺序也就是
    WriteLine("{0}是排在后面的第一个参数,不是你申明时候的顺序,申明的参数的同级的,没有谁优先",a,b);
      

  7.   

    这个问题的结论是,楼主自己吧自己绕晕了。
    1、可以确定 string.Format 中的 {0},{1} 是与后面的 参数列表顺序一致的,而不是与参数列表中声明顺序;
    2、楼主的疑惑点,关键是 字符串中的 “a={1},b={0}” 吧自己搞晕了,以为输出的 a=10 就一定是声明变量a 的内存值。输出的字符串中 a=10 不能代表变量a的值就是10,此a非彼a