收录日期:2019/04/24 08:28:57 时间: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自己查啊,里面讲的很详细。。。

一个图片流动问题 .bmp文件的一些问题,请指教 毕业前的哀求。。。。。并散发 csdn这两天为什么这么慢呀 事件 PB5怎么添加WinCE组件 usb-ttl 通讯错误 有偿请人配置web服务器安全。 XSLT文件与XML文档的关联问题 学习C语言的感受。 熟悉VC2008添加变量向导的请进!!! 关于jQuery json 在线等待 找一个前辈教我2个东西,给现金 真心求教,为什么我安装msde,双击setup弹出一个正在配置的小框后,等几秒钟小框没有了安装也不继续了? 请教几句LINQ的写法 VB中如何调用DLL中的二级指针,下面有DELPHI的DEMO,有没有哪位大虾能帮我把红色部分改成VB6的,万分感谢! 如何用正则表达式匹配 s = \":信息;:信息管理;:信息检索;:knowledge management;:\"中的中英文词语 C#初学者请教一个二重积分的问题 读写txt文档 如何作这样查询 琢磨了很久,不知道行号怎么添加,谢谢 如何在已经写好的项目中加入MFC对话框 DSHOW 图表的创建用于 MPG 转 AVI 如何做实时统计报表啊?想做成Excel格式输出的那种 请大家推荐一些技术网站 UDP网络传输文件 项目合作 关于moss链接reporting service2005出现问题 c++打开网页如何隐藏窗口? 为啥preInit取不到s的值啊?明明已经通过构造穿了呀。