辜渝傧

13037102709

027-87870986

教学实训

您当前的位置:首页 > 教学资源 > 实训方案 >

C#应用实训|项目五 知识拓展

发布者:唯众    布时间:2020-12-21 11:54:55    点击量:

  1. 产生不重复随机数
       C#中Math类Random产生随机数与随机种子有关,默认随机种子为当前时间,因为程序运行速度很快,因此可能产生的多个相同的随机数,如果在应用中希望产生完全不同的随机数,需要使用算法实现。
6-10
        要求产生10个不同的随机数,数值在1到10之间。假设将1至10存入数组a,按顺序产生10个不同的随机数,存入数组b,最后输出数组b中10个随机数。
int[] a = new int[10];
     for (int i = 0; i < 10; i++)
           a[i] = i+1;
           Random rand = new Random();
            int[] b = new int[10];
            int count = a.Length;
            int num;
            for (int j = 0; j < 10; j++)
            {
                num = rand.Next(0, count);
                b[j] = a[num];
                a[num] = a[count - 1];
                count--;
            }
            for (int j = 0; j < 10; j++)
            {
                Console.WriteLine(b[j]);
            }
程序运行结果如图5-10所示:
图5-10  随机数生成效果图
  1. 泛型委托Action
       Action<T> 泛型委托:封装一个方法,该方法没有返回值。可以使用此委托以参数形式传递方法,而不用显式声明自定义的委托。该方法必须与此委托定义的方法签名相对应。也就是说,封装的方法必须具有一个通过值传递给它的参数,并且不能返回值。泛型委托支持多个参数。下面使用泛型委托实现例5-7。
public Form2()
        {
            InitializeComponent();
        }
        private void setText()
        {
            while (true)
            {
                if(InvokeRequired)
                {
                if (label1.Text.Equals("红色"))
                {
                    this.Invoke( new Action(delegate()
                    {
                        label1.Text = "蓝色";
                    }));  
                }
                else
                {
                    this.Invoke( new Action(delegate()
                    {
                        label1.Text = "红色";
                    }));  
                }
                Thread.Sleep(2000);
                }
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Thread t = new Thread(new ThreadStart(new Action(setText)));
            t.IsBackground = true;
            t.Start();
        }

项目总结

  • C#支持多线程技术,通过多线程编程能提高程序执行效率。
  • 委托包含对方法的引用,通过委托定义可以将委托指向多个方法,可以委托的实例化使委托调用某个具体方法。
  • 事件允许一个对象将消息通知其他的对象,发送消息的对象称为事件源。


上一篇:C#应用实训|任务3 事件引发页面刷新

下一篇:C#应用实训|项目五 常见问题解析