日期:2014-05-16  浏览次数:20389 次

(新手请教)关于委托与事件一个简单例子代码,不知道哪里出错了
我把default.aspx.cs的页面粘贴到这里:
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class _Default : System.Web.UI.Page 
{

    class Cat
    { 
        private string name;
        public Cat()
        { this.name = "无名字"; }

        public delegate void a();
        public event a b;

        public void Shout()
        {
            Response.Write("喵");
            if (b != null)
            { b(); }
        }
    }

    class Mouse
    {
        private string name;
        public Mouse()
        { this.name = "无名字"; }

        public void Run()
        { Response.Write("猫来了,快跑"); }
    }

        Cat kitty = new Cat();
        Mouse jerry = new Mouse();
        kitty.b += new Cat.a(jerry.Run);
        kitty.Shout();


    protected void Page_Load(object sender, EventArgs e)
    { }

}

然后我运行,结果出错:
行 46:         kitty.b += new Cat.a(jerry.Run);
原因:类、结构或接口成员声明中的标记“+=”无效

我是照着大话设计模式362页的例子敲进去的代码,,代码想表达的意思是通过猫与老鼠的例子,说明委托与事件的关系,但我弄不明白代码哪里出错了???
------解决方案--------------------
我当然可以确定,因为我调试过。

你检查下
 Cat kitty = new Cat();
        Mouse jerry = new Mouse();
        kitty.b += new Cat.a(jerry.Run);
        kitty.Shout();
代码你写在哪里了。
因为你的cat mouse类都放在 _default类里面了。
------解决方案--------------------
楼主的代码是乱写的吧,怎能把类写在页面类里面了,怪!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class NetTech_面向对象_委托_Default : System.Web.UI.Page
{
    public delegate string