C#怎么对4个数字做全排列并赋值给4个变量?

例如对已有的4个数字例如(1,2,3,4)做全排列并赋值给a1,a2,a3,a4?
对每个a1,a2,a3,a4的情况都要做一些操作的,就是想不明白怎么用循环之类的得出那4个变量的24种不同的情况

是这个意思么?

 int[] array = {1, 2, 3, 4};
            int iCount = 0;
            for (int i1 = 0; i1 < 4; i1++)
            {
                for (int i2 = 0; i2 < 4; i2++)
                {
                    if (i2 == i1)
                    {
                        continue;
                    }

                    for (int i3 = 0; i3 < 4; i3++)
                    {
                        if (i3 == i1 || i3 == i2)
                        {
                            continue;
                        }

                        for (int i4 = 0; i4 < 4; i4++)
                        {
                            if (i4 == i1 || i4 == i2 || i4 == i3)
                            {
                                continue;
                            }
                            iCount++;
                            Console.WriteLine("{0}-{1}-{2}-{3}", i1, i2, i3, i4);
                        }
                    }
                }
            }

            Console.WriteLine("AllCount == {0}", iCount);
            Console.ReadKey();
  int[] array = {1, 2, 3, 4};
            int a1, a2, a3, a4;
            int iCount = 0;
            for (int i1 = 0; i1 < array.Length; i1++)
            {
                for (int i2 = 0; i2 < array.Length; i2++)
                {
                    if (i2 == i1)
                    {
                        continue;
                    }

                    for (int i3 = 0; i3 < array.Length; i3++)
                    {
                        if (i3 == i1 || i3 == i2)
                        {
                            continue;
                        }

                        for (int i4 = 0; i4 < array.Length; i4++)
                        {
                            if (i4 == i1 || i4 == i2 || i4 == i3)
                            {
                                continue;
                            }
                            a1 = array[i1];
                            a2 = array[i2];
                            a3 = array[i3];
                            a4 = array[i4];
                            iCount++;
                            Console.WriteLine("{0}-{1}-{2}-{3}", a1, a2, a3, a4);
                        }
                    }
                }
            }

            Console.WriteLine("AllCount == {0}", iCount);
            Console.ReadKey();
        }

你去百度一下全排列算法,直接用一下内部实现赋值不就行了。你的问题在算法是吧

http://www.cnblogs.com/nokiaguy/archive/2008/05/11/1191914.html比较高效的递归算法

也可以利用数组排列的方式来进行吧,没变动一次就记录组合,去掉相同排列就行,不过比较麻烦