收录日期:2018/11/19 05:26:42 时间:2016/07/26 20:16:48 标签:C#
委托是什么东西?可以 public event事件名 as 委托名 这样吗?
我用上as就报错 网上搜了一下, 好像也没有 as XXdelegate.

这里是题目要求, 我真是不明白再说什么。

把学校的人员结构抽象成University类,要求此类中包含方法、事件、属性等。用代码实现抽象(只需要定义)其中,包括学生和教师成员,抽象出Student类和Teacher类,Teacher类里包含了授课方法,Student类里包含学习方法,学生m_students和教师m_teachers是两种独立的对象,可用property语句声明属性。事件包括开学和放假。可参考以下事件名称:
开学事件TermBeginsEvent
放假事件TermEndsEvent
定义事件的语法为“public event事件名 as 委托名”,如“public event TermBeginsEvent as EventHandler”表示开学事件的定义)。


最后我自己写成了这样, 请各位看看是不是题目的要求:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Task_ch07
{
    public class University
    {
        Student m_students;
        public Task_ch07.Student Students
        {
            get { return m_students; }
            set { m_students = value; }
        }
        Teacher m_teachers;
        public Task_ch07.Teacher Teachers
        {
            get { return m_teachers; }
            set { m_teachers = value; }
        }
       
        

        event EventHandler TermBeginsEvent;
        event EventHandler TermEndsEvent;

        public University(){

            TermBeginsEvent += new EventHandler(TermBeginsEvent1);
            TermEndsEvent += new EventHandler(TermEndsEvent1);
        }

        public void TermBeginsEvent1(Object sender, EventArgs e)
        {
            Console.WriteLine("开学");
        }
        public void TermEndsEvent1(Object sender, EventArgs e)
        {
            Console.WriteLine("放假");
        }

    }


    
    public class Student 
    {
        public void haveClass()
        {
            Console.WriteLine("上课");
        }
    }


    public class Teacher 
    {
        public void teachClass()
        {
            Console.WriteLine("授课");
        }

    }
}



event都可以通过delegate来完成。
event强调了事件。通过订阅事件来获得通知
delegate则泛指符合某种格式的函数
EventHandler 是一个预定义的委托,专用于表示不生成数据的事件的事件处理程序方法。
EventHandler 委托
TermBeginsEvent += new EventHandler(TermBeginsEvent1);
.“+=”为此事件添加一个委托,这个委托代表一个事件处理方法。
刚刚去C/C++板块转了圈

发现那全是些精深的算法题

和这儿完全不一样

唉......
你的意思就是  根本就没有as这种?
你可以把委托看成是一个容器
这个容器是用来装方法的
“调用”一下这个容器,容器内的方法就全被执行了
简单一点来说,你可以把委托动作是函数指针(因为C#中没有函数指针)。
该回复于2010-09-10 10:14:36被版主删除
public event TermBeginsEvent as EventHandler
是VB.net的语法

该回复于2010-09-10 10:14:36被版主删除
引用 2 楼 zxp8819 的回复:
刚刚去C/C++板块转了圈

发现那全是些精深的算法题

和这儿完全不一样

唉......


如果有机会我告诉你什么叫做装学生。
委托就是方法的引用,只要是符合委托定义的条件,什么方法都可以,一般它和事件结合起来使用较多。
委托就是一种引用类型,指向特定签名的函数
委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。委托方法的调用可以像其他任何方法一样,具有参数和返回值
MSDN自己查啊,里面讲的很详细。。。
委托 简单说就是把方法作为参数传给另一个方法

http://blog.csdn.net/xiaogui340/archive/2010/08/30/5849509.aspx

一个简单的介绍,你可以看下
引用 9 楼 sp1234 的回复:
引用 2 楼 zxp8819 的回复:
刚刚去C/C++板块转了圈

发现那全是些精深的算法题

和这儿完全不一样

唉......


如果有机会我告诉你什么叫做装学生。
对于C#,如果不明白委托是怎么回事,可以搜索

张子阳 委托

我觉得张子阳对于委托的那篇博客文章写得很好,至少让我明白了

如果看了张子阳的委托文章,还不明白委托,我想应该是你的基础不牢了

哪就再去补补基础,做些项目

感谢张子阳,让我突然在甘一天就明白了委托

感谢CSDN里像张子阳哪样的高手,因为你们,让我成长了
张子阳的文章在哪儿呀?给个地址?
引用 16 楼 shangxl 的回复:
张子阳的文章在哪儿呀?给个地址?


难道你不会搜索

百度,谷哥,都不会用吗?
委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。委托方法的调用可以像其他任何方法一样,具有参数和返回值
MSDN自己查啊,里面讲的很详细。。。

请问MHTML文件用什么软件打开~~ 请问有没有oracle的群,大家拿出来分享一下,交流交流 j2me的初学者提问 TEXTAREA的简单问题 怎样用VB作一个可以看硬盘ID的ActiveX.DLL控件 Help!关于MFC中的CRegKey类 我用VB做了一个ActiveX控件,控件有一个能显示数据的DataGrid,但我在ASP里面调用这个ActiveX控件的时候,DataGrid怎么没有数据了???\0 为什么系统时间总是自动变慢? 关于_RecordsetPtr中BOF和EOF的问题 奇怪的很,大家帮帮忙,电脑出了问题,显示器没有信号也不报警 ■■■■■推荐大家一个非常好的C++ Builder编程资源网站■■■■■ ■■■■■推荐大家一个非常好的C++ Builder编程资源网站■■■■■ ■■■■■推荐大家一个非常好的C++ Builder编程资源网站■■■■■ 怎么实现全屏 能不能把多个Recordset对象合并呢? Windows XP上的MediaPlayer 9问题?? 我用的是ADO联接数库,怎么样才能把指针移动到所取回的记录集上我想要的位置上啊 高手这么多,我就不信不能解决这个问题!!!!!!!!! 存储过程没有返回结果,请帮忙。 看内容 asp.net 怎么得到客户端的域用户名? 帮我看看最基础的东西. 一个最少人员算法问题,有兴趣来帮帮忙!!各位大哥们!! 调试ASP.net页面遇到的问题!!!!!!!!!!!!!!! 我想做个非常小的编译器(学习编译原理并希望借此对整个电脑系统有个整体的认识)提点意见吧!! china-pub那样的网站是怎么做的(全技术细节) EJB是什么?能否介绍一两本入门书?? 请问用vc.net alt 写的组件可以在所有的windows 平台下直接使用吗? china-pub那样的网站是怎么做的(全技术细节) 我是新手,想问一个问题