一个关于.net事件处理的程序,能运行,结果不对,帮忙看一下,该怎么处理
一个关于.net事件处理的程序,能运行,结果不对,帮忙看一下
------解决方案--------------------
从你的if条件上看,没啥问题,那你就调试看看,当不符合时,看看是从哪里触发的
------解决方案--------------------
int te;
for (int i = 0; i < 35; i++)
{
te = ra.Next(1, 35);
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//事件
//1、 用.NET事件机制模拟彩票摇奖。要求:
//(1) 事件生产者:Ticket。
// 成员字段:第几期彩票
//当产生幸运号码时,通知彩民。其中,幸运号码为[10,16]之间的整数。
//(2)事件消费者:Customer
// 两个方法:买彩票的方法,及对中奖后的事件处理方法。
//(3)事件参数类
// 成员字段:幸运号码
namespace Test4
{
public class TicketEventArgs:EventArgs
{//事件参数类
public int Num{get;set;}
public TicketEventArgs(int num)
{
Num = num;
}
}
public delegate void TicketEventHandler(object source,TicketEventArgs args);//声明事件处理委托
public class Ticket
{//事件生产者:定义一个随机产生号码的事件,如果号码在[10,16]区间上,就交给事件消费者处理
Random ra = new Random();
public event TicketEventHandler ticketEvent;//在事件生产者中声明事件
public void TicketNumTof()
{
int te;
for (int i = 0; i < 35; i++)
{
te = ra.Next(1, 35);
if ((te>=10) && (te<=16))
{//如果产生的数字在区间[10,16]上就开始封装数据
TicketEventArgs args = new TicketEventArgs(i);//封装数据
if (ticketEvent != null)
{//如果事件消费者不为空,交给事件消费者处理
ticketEvent(this, args);
}
}
}
}
}
public class Customer
{//事件消费者
public static void handleEvent(object source, TicketEventArgs args)
{
Console.WriteLine("当前的幸运号码为:{0}",args.Num);
}
public static void Main()
{
Ticket t = new Ticket();
t.ticketEvent+=new TicketEventHandler(Customer.handleEvent);
t.TicketNumTof();
}
}
}
------解决方案--------------------
从你的if条件上看,没啥问题,那你就调试看看,当不符合时,看看是从哪里触发的
------解决方案--------------------
int te;
for (int i = 0; i < 35; i++)
{
te = ra.Next(1, 35);