今天天气很不错,本来不应该去送女朋友。但是我总是感觉不去送会后悔,或许自己有强迫症。6:30就起床了,然后打车去女朋友家。收拾好行李,匆忙地就去了火车站。这是第一次去送女朋友,我知道,以后有很多次。很多次

昨天看了仔细看了一下delegate,感觉非常不错也:),这里提供一个简单例子:

此处介绍的示例是建立在事件和委托和引发事件中讨论的多个部分的基础上的。
本示例显示了如何从您的类引发事件以及如何处理事件。它定义了以下类。 
AlarmClock 是引发 Alarm 事件的类。 
AlarmEventArgs 为 Alarm 事件定义数据。 
AlarmEventHandler 是 Alarm 事件的委托。 
WakeMeUp 是具有 AlarmRang 方法的类,该方法处理 Alarm 事件。 
AlarmDriver 是示范事件如何连结的类。该类实例化 AlarmClock 和 WakeMeUp。然后,该类通过对 WakeMeUp 实例的 AlarmRang 方法的引用实例化 AlarmEventHandler 委托。AlarmDriver 通过向 AlarmClock 的实例注册该委托并用 += 语法将委托添加到一个事件,完成事件连结。 
编译和运行该示例 
将以下代码复制到源文件(如 EventSample.cs 或 EventSample.vb)。 
从包含源文件的目录下,执行下列命令: 
[C#]
csc /r:System.dll EventSample.cs

[Visual Basic]
vbc /r:System.dll EventSample.vb
(/r 选项引用 System 程序集。) 
运行创建的可执行文件 EventSample.exe。 
[C#]
// EventSample.cs.
//
namespace EventSample
{  
   using System;
   using System.ComponentModel;
   
   // Class that contains the data for 
   // the alarm event. Derives from System.EventArgs.
   //
   public class AlarmEventArgs : EventArgs 
   {  
      private readonly bool snoozePressed ;
      private readonly int nrings;
      
      //Constructor.
      //
      public AlarmEventArgs(bool snoozePressed, int nrings) 
      {
         this.snoozePressed = snoozePressed;
         this.nrings = nrings;
      }
      
      // The NumRings property returns the number of rings
      // that the alarm clock has sounded when the alarm event 
      // is generated.
      //
      public int NumRings
      {     
         get { return nrings;}      
      }
      
      // The SnoozePressed property indicates whether the snooze
      // button is pressed on the alarm when the alarm event is generated.
      //
      public bool SnoozePressed 
      {
         get {return snoozePressed;}
      }
      
      // The AlarmText property that contains the wake-up message.
      //
      public string AlarmText 
      {
         get 
         {
            if (snoozePressed)
            {
               return ("Wake Up!!! Snooze time is over.");
            }
            else 
            {
               return ("Wake Up!");
            }
         }
      }  
   }
   
   // Delegate declaration.
   //
   public delegate void AlarmEventHandler(object sender, AlarmEventArgs e);
   
   // The Alarm class that raises the alarm event.
   //
   public class AlarmClock 
   {  
      private bool snoozePressed = false;
      private int nrings = 0;
      private bool stop = false;
      
      // The Stop property indicates whether the 
      // alarm should be turned off.
      //
      public bool Stop 
      {
         get {return stop;}
         set {stop = value;}
      }
      
      // The SnoozePressed property indicates whether the snooze
      // button is pressed on the alarm when the alarm event is generated.
      //
      public bool SnoozePressed
      {
         get {return snoozePressed;}
         set {snoozePressed = value;}
      }
   // The event member that is of type AlarmEventHandler.
      //
      public event AlarmEventHandler Alarm;

      // The protected OnAlarm method raises the event by invoking 
      // the delegates. The sender is always this, the current instance 
      // of the class.
      //
      protected virtual void OnAlarm(AlarmEventArgs e)
      {
         if (Alarm != null) 
         {
            // Invokes the delegates. 
            Alarm(this, e);
         }
      }
      
      // This alarm clock does not have
      // a user interface. 
      // To simulate the alarm mechanism it has a loop
      // that raises the alarm event at every iteration
      // with a time delay of 300 milliseconds,
      // if snooze is not pressed. If snooze is pressed,
      // the time delay is 1000 milliseconds.
      //
      public void Start()
      {
         for (;;)    
         {
            nrings++;      
            if (stop)
            {
               break;
            }
            
            else if (snoozePressed)
            {
               System.Threading.Thread.Sleep(1000);
               {
                  AlarmEventArgs e = new AlarmEventArgs(snoozePressed, 
                     nrings);
                  OnAlarm(e);
               }
            }
            else
            {
               System.Threading.Thread.Sleep(300);
               AlarmEventArgs e = new AlarmEventArgs(snoozePressed, 
                  nrings);
               OnAlarm(e);
            }           
         }
      }
   }
   
   // The WakeMeUp class that has a method AlarmRang that handles the
   // alarm event.
   //
   public class WakeMeUp
   {
      
      public void AlarmRang(object sender, AlarmEventArgs e)
      {
         
         Console.WriteLine(e.AlarmText +" ");
         
         if (!(e.SnoozePressed))
         {
            if (e.NumRings % 10 == 0)
            {
               Console.WriteLine(" Let alarm ring? Enter Y");
               Console.WriteLine(" Press Snooze? Enter N"); 
               Console.WriteLine(" Stop Alarm? Enter Q");
               String input = Console.ReadLine();
               
               if (input.Equals("Y") ||input.Equals("y")) return;
               
               else if (input.Equals("N") || input.Equals("n"))
               {
                  ((AlarmClock)sender).SnoozePressed = true;
                  return;
               }
               else
               {
                  ((AlarmClock)sender).Stop = true;
                  return;
               }
            }
         }
         else
         {
            Console.WriteLine(" Let alarm ring? Enter Y"); 
            Console.WriteLine(" Stop Alarm? Enter Q");
            String input = Console.ReadLine();
            if (input.Equals("Y") || input.Equals("y")) return;
            else 
            {
               ((AlarmClock)sender).Stop = true;
               return;
            }
         }
      }
   }
   
   
   
   // The driver class that hooks up the event handling method of
   // WakeMeUp to the alarm event of an Alarm object using a delegate.
   // In a forms-based application, the driver class is the
   // form.
   //
   public class AlarmDriver
   {  
      public static void Main (string[] args)
      {  
         // Instantiates the event receiver.
         WakeMeUp w= new WakeMeUp();
                  
         // Instantiates the event source.
         AlarmClock clock = new AlarmClock();

         // Wires the AlarmRang method to the Alarm event.
         clock.Alarm += new AlarmEventHandler(w.AlarmRang);

         clock.Start();
      }
   }   
}

转载于:https://www.cnblogs.com/veelee/archive/2004/08/26/36636.html

今天去火车站送女朋友了相关推荐

  1. session每次请求都是新建的吗_每次去火车站都是提心吊胆,感觉就像进了贼窝一样,有同感的吗?...

    今天,我们一起来说说火车站那些事,献给那些刚踏入社会的,但愿少一些欺骗,多一分善良. 坐火车远行,去火车站跟前小卖铺买东西,给了零钱给老板.每次给,老板都会说,钱少了一个角.骗子老板说给我换零钱,给了 ...

  2. 送女朋友实用的七夕礼物、送女朋友七夕礼物最有意义排行榜

    一年一度的七夕节马上就要到了,你是不是已经在想:有哪些有意思的礼物可以送给女朋友?也有各种平台和品牌,自称送礼达人,给你各种推荐送女朋友的礼物,这些答案要么是抖机灵的,要么是旅游钻戒什么的割韭菜,一点 ...

  3. 我是如何用一行代码表白学妹~❤520情人节送女朋友的3D樱花雨相册礼物❤~(程序员表白专属)

    ❉ 520情人节送女朋友的3D相册礼物~html+css+js实现抖音炫酷樱花3D相册(含音乐+自定义文字) 一年一度的520情人节/七夕情人节/女朋友生日/程序员表白,是不是要给女朋友或者正在追求的 ...

  4. 我是如何用一行代码表白学妹~❤520情人节送女朋友的3D樱花雨相册礼物❤~(程序员表白专属)...

    ❉ 520情人节送女朋友的3D相册礼物~html+css+js实现抖音炫酷樱花3D相册(含音乐+自定义文字) 一年一度的520情人节/七夕情人节/女朋友生日/程序员表白,是不是要给女朋友或者正在追求的 ...

  5. TensorFlow实时任意风格迁移,送女朋友的创意礼物有了

    TensorFlow实时任意风格迁移,送女朋友的创意礼物有了 前言 自适应实例规范化 风格迁移网络 编码器结构与实现 通过反射填充(reflection padding)减少块伪影 解码器结构与实现 ...

  6. 七夕情人节送女朋友什么礼物?七夕情人节礼物推荐

    七夕情人节送女朋友什么礼物最好呢?七夕作为我们的传统情人节,当然送礼物要用心+浪漫啦,今天就给大家介绍几款干货满满的七夕礼物清单吧,有了这些再也不用担心不会挑礼物啦. 一.南卡runner pro3骨 ...

  7. 七夕情人节该送女朋友什么礼物,推荐五款让女朋友超惊喜的礼物

    七夕情人节又快到了,在这有爱的日子里,相信又有一大群男同胞不知该送女朋友什么礼物,又担心送到女朋友不喜欢的,但又不想敷衍了事,没关系,那就跟着我一起来看看这五款适合送给女朋友的礼物. 一.西圣F1气传 ...

  8. 七夕送什么给女朋友好?2022年送女朋友的七夕礼物推荐

    七夕是咱们中国的传统情人节,是一个浪漫而温馨的节日,在七夕节到来的时候,有对象的男生就会选择一些礼物送给自己的对象,那么七夕节送女朋友什么礼物比较好?不用担心,不要懊恼,下面是我为大家收集的关于&qu ...

  9. 520情人节送女朋友的3D相册礼物~html+css+js实现抖音炫酷樱花3D相册(含音乐)

    520情人节送女朋友的3D相册礼物~html+css+js实现抖音炫酷樱花3D相册(含音乐) 一年一度的/520情人节/七夕情人节/生日礼物/告白师妹/程序员表白,是不是要给女朋友或者正在追求的妹子一 ...

  10. ❤520情人节送女朋友的生日礼物~html+css+js实现抖音炫酷樱花3D相册(含音乐)

    ❉ 520情人节送女朋友的3D相册礼物~html+css+js实现抖音炫酷樱花3D相册(含音乐) 一年一度的/520情人节/七夕情人节/生日礼物/告白师妹/程序员表白,是不是要给女朋友或者正在追求的妹 ...

最新文章

  1. NETCONF 环境搭建
  2. C#中throw抛出异常后,后续代码执行情况
  3. html页面的header,HTML5教程 | HTML5 header和footer元素
  4. Okhttp3中设置超时的方法
  5. 匹配中文字符的正则表达式: [u4e00-u9fa5](
  6. Halcon学习笔记:xyz_attrib_to_object_model_3d示例
  7. Okhttp3用法案例:查询小车余额
  8. 7-5 sdut-验证“哥德巴赫猜想” (10 分)(优化素数判断)
  9. WIN11中MathType编辑中“打开数学输入面板”是灰色不可编辑
  10. udev的一個小問題
  11. 关于手机电脑蓝牙4.0和CC2541蓝牙4.0的区别
  12. 【翻译】谷歌基于数据驱动的软件安全:模型和方法
  13. Shader特效之图片波动炫光效果
  14. Ubuntu连接WIFI并开启热点
  15. SA387Gr11Cl2是什么材质
  16. 【计算机三级】网路技术学习笔记 第七章 路由器配置及使用
  17. PB 中获取时间的方法
  18. C#设计模式之代理模式
  19. echarts柱状图数值差异过大和最小值无法选中的问题解决
  20. 什么是ACCESS端口?此端口如何处理数据帧?

热门文章

  1. 关于读研和生信学科的思考
  2. 基于python和mysql的查询操作
  3. 特征值,特征向量,特征多项式
  4. oracle删除导入库,oracle数据库删除和导入方法
  5. 服务器怎么关闭终端依然运行node,关闭控制台后如何永久运行node.js应用程序?...
  6. 认知与思考-190820
  7. 观察者模式与发布订阅者模式的区别
  8. 前端数据修改的两种方式
  9. php导出数组到csv格式demo
  10. asp.net 安全