Code Bye

C#乱序随机执行多个方法,问一下怎么实现呢

weicongjin 于 2016-05-25 17:31:26 编辑

例如现在有A、B、C、D是个方法,需要打乱顺序执行,4个都要执行,随机顺序,每个执行一次。
排列组合的意思:
1、C > A > B > D
2、D > B > C > A
3、A > D > C > B

问一下在.NET 2.0中怎么样实现呢?

        /// <summary>
        /// 随机乱序执行A、B、C、D
        /// </summary>
        public void RandomRun()
        {
            A();
            B();
            C();
            D();
        }
        public void A()
        { }
        public void B()
        { }
        public void C()
        { }
        public void D()
        { }
解决方案

5

大致如下:
1. 放在List里面,
List<int, string>  (Key, Value)
1 , “A”
2 , “B”
3 , “C”
4 , “D”
2. 娶个随机数 x, (x mod list.length) + 1
3.根据2的结果找到value, 然后删除这个list item
4. switch case 3的结果

35

当然假如你只是想随机地“仅调用一遍”,就可以从列表中删除待执行的委托。
using System;
using System.Collections.Generic;
namespace ConsoleApplication2
{
    class Program
    {
        delegate void Action();
        static void Main(string[] args)
        {
            List<Action> methods = new List<Action> { A, B, C, D };
            while(methods.Count>0)
            {
                var j = rnd.Next(methods.Count);
                var m = methods[j];
                methods.RemoveAt(j);
                m();
            }
            Console.WriteLine("...............按任意键结束");
            Console.ReadKey();
        }
        private static Random rnd = new Random();
        static void A()
        {
            Console.Write("A");
        }
        static void B()
        {
            Console.Write("B");
        }
        static void C()
        {
            Console.Write("C");
        }
        static void D()
        {
            Console.Write("D");
        }
    }
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C#乱序随机执行多个方法,问一下怎么实现呢