12 个解决方案
#2
看过了
#3
我也是,看完资料就明白,过后就又晕了
#4
求高手解答呀~~
#5
好比现实生活中的我交给你一件事去办这个例子。
首先我需要定义出来这个事到底是干嘛?也就是事件的描述,这个描述在代码中是通过委托方式表现的。(比如我要你去叫某个人)
delegate void CallSthBodyDelegate(string personName);
上面这个就是这个事件的契约,也是我和你沟通的方式,你在做相关事情的时候必须要符合这个契约。
然后才有了基于这个描述的事件
class Me
{
public event CallSthBodyDelegate MyRequest;
void CallZhangsan()
{
var del=MyRequest;
if(del!=null)
{
del("zhangsan");
}
}
}
接下来我需要把这件事交给你去办吧?
MyRequest+=YOUDO //事件的挂接方式
YOUDO当然去接受这个事件的相关信息吧,相关信息也就是我们前面定义出来的委托的格式
YOUDO:
class You
{
public You()
{
Me m=new Me();
m.MyRequest+=CallSthBodyDelegate(CallPerson);
}
void CallPerson(string personName)
{
Console.Write(string.Format("{0} was called",personName));
}
}
首先我需要定义出来这个事到底是干嘛?也就是事件的描述,这个描述在代码中是通过委托方式表现的。(比如我要你去叫某个人)
delegate void CallSthBodyDelegate(string personName);
上面这个就是这个事件的契约,也是我和你沟通的方式,你在做相关事情的时候必须要符合这个契约。
然后才有了基于这个描述的事件
class Me
{
public event CallSthBodyDelegate MyRequest;
void CallZhangsan()
{
var del=MyRequest;
if(del!=null)
{
del("zhangsan");
}
}
}
接下来我需要把这件事交给你去办吧?
MyRequest+=YOUDO //事件的挂接方式
YOUDO当然去接受这个事件的相关信息吧,相关信息也就是我们前面定义出来的委托的格式
YOUDO:
class You
{
public You()
{
Me m=new Me();
m.MyRequest+=CallSthBodyDelegate(CallPerson);
}
void CallPerson(string personName)
{
Console.Write(string.Format("{0} was called",personName));
}
}
#6
你自己写一个dll就懂了,我写个需求给你
-----------------------------------------------
编写一个类库,编译成dll,供其他开发者引用
dll里,有一个方法GetData,返回值是DataTable
dll里还有timer,每隔一段时间,就调用一下GetData方法,比如每隔几秒就通过GetData获取出一个dataTable
通过事件,能让引用dll的开发人员使用获取出的DataTable
实现的效果就是:当dll内部获取出数据后,把数据抛到引用dll的层中进行使用
----------------------------------------------------------------------------
把这个类库做好,你就懂了。我当初就是开发这个程序搞懂的委托和事件
当你开发程序引用外部dll的时候,dll里什么时候获取到数据是未知,只能通过抛出事件来实现
这就是事件和方法的最主要区别,方法是自己在代码里调用,代码运行到就执行,而事件啥时候运行,对于开发人员来说是不确定的
就像你编写了一个按钮点击事件,写了相应的代码
但这些代码什么时候执行,你确定不了,啥时候点按钮啥时候就执行
-----------------------------------------------
编写一个类库,编译成dll,供其他开发者引用
dll里,有一个方法GetData,返回值是DataTable
dll里还有timer,每隔一段时间,就调用一下GetData方法,比如每隔几秒就通过GetData获取出一个dataTable
通过事件,能让引用dll的开发人员使用获取出的DataTable
实现的效果就是:当dll内部获取出数据后,把数据抛到引用dll的层中进行使用
----------------------------------------------------------------------------
把这个类库做好,你就懂了。我当初就是开发这个程序搞懂的委托和事件
当你开发程序引用外部dll的时候,dll里什么时候获取到数据是未知,只能通过抛出事件来实现
这就是事件和方法的最主要区别,方法是自己在代码里调用,代码运行到就执行,而事件啥时候运行,对于开发人员来说是不确定的
就像你编写了一个按钮点击事件,写了相应的代码
但这些代码什么时候执行,你确定不了,啥时候点按钮啥时候就执行
#7
我懂了这个逻辑,但是不太理解那语法丝的,能指点下吗
#8
你都理解了逻辑,语法还有什么可说的……
委托就是平时写的方法,加个delegate
事件跟委托的关系就仿佛属性和字段的关系
委托就是平时写的方法,加个delegate
事件跟委托的关系就仿佛属性和字段的关系
#9
委托是对方法的引用,可以引用多个方法,他其实是一个类,包含了线程间调用接口
事件是封装为属性的委托
事件是封装为属性的委托
#10
看着看着 似乎明白 又有点不明白,晕啊~
#11
我想说的是 事件的定义完了 我们怎么设置他的触发条件呢 求个例子
#12
你去超市购物,就是事件。我托你给我带包烟,就是委托!
#1
#2
看过了
#3
我也是,看完资料就明白,过后就又晕了
#4
求高手解答呀~~
#5
好比现实生活中的我交给你一件事去办这个例子。
首先我需要定义出来这个事到底是干嘛?也就是事件的描述,这个描述在代码中是通过委托方式表现的。(比如我要你去叫某个人)
delegate void CallSthBodyDelegate(string personName);
上面这个就是这个事件的契约,也是我和你沟通的方式,你在做相关事情的时候必须要符合这个契约。
然后才有了基于这个描述的事件
class Me
{
public event CallSthBodyDelegate MyRequest;
void CallZhangsan()
{
var del=MyRequest;
if(del!=null)
{
del("zhangsan");
}
}
}
接下来我需要把这件事交给你去办吧?
MyRequest+=YOUDO //事件的挂接方式
YOUDO当然去接受这个事件的相关信息吧,相关信息也就是我们前面定义出来的委托的格式
YOUDO:
class You
{
public You()
{
Me m=new Me();
m.MyRequest+=CallSthBodyDelegate(CallPerson);
}
void CallPerson(string personName)
{
Console.Write(string.Format("{0} was called",personName));
}
}
首先我需要定义出来这个事到底是干嘛?也就是事件的描述,这个描述在代码中是通过委托方式表现的。(比如我要你去叫某个人)
delegate void CallSthBodyDelegate(string personName);
上面这个就是这个事件的契约,也是我和你沟通的方式,你在做相关事情的时候必须要符合这个契约。
然后才有了基于这个描述的事件
class Me
{
public event CallSthBodyDelegate MyRequest;
void CallZhangsan()
{
var del=MyRequest;
if(del!=null)
{
del("zhangsan");
}
}
}
接下来我需要把这件事交给你去办吧?
MyRequest+=YOUDO //事件的挂接方式
YOUDO当然去接受这个事件的相关信息吧,相关信息也就是我们前面定义出来的委托的格式
YOUDO:
class You
{
public You()
{
Me m=new Me();
m.MyRequest+=CallSthBodyDelegate(CallPerson);
}
void CallPerson(string personName)
{
Console.Write(string.Format("{0} was called",personName));
}
}
#6
你自己写一个dll就懂了,我写个需求给你
-----------------------------------------------
编写一个类库,编译成dll,供其他开发者引用
dll里,有一个方法GetData,返回值是DataTable
dll里还有timer,每隔一段时间,就调用一下GetData方法,比如每隔几秒就通过GetData获取出一个dataTable
通过事件,能让引用dll的开发人员使用获取出的DataTable
实现的效果就是:当dll内部获取出数据后,把数据抛到引用dll的层中进行使用
----------------------------------------------------------------------------
把这个类库做好,你就懂了。我当初就是开发这个程序搞懂的委托和事件
当你开发程序引用外部dll的时候,dll里什么时候获取到数据是未知,只能通过抛出事件来实现
这就是事件和方法的最主要区别,方法是自己在代码里调用,代码运行到就执行,而事件啥时候运行,对于开发人员来说是不确定的
就像你编写了一个按钮点击事件,写了相应的代码
但这些代码什么时候执行,你确定不了,啥时候点按钮啥时候就执行
-----------------------------------------------
编写一个类库,编译成dll,供其他开发者引用
dll里,有一个方法GetData,返回值是DataTable
dll里还有timer,每隔一段时间,就调用一下GetData方法,比如每隔几秒就通过GetData获取出一个dataTable
通过事件,能让引用dll的开发人员使用获取出的DataTable
实现的效果就是:当dll内部获取出数据后,把数据抛到引用dll的层中进行使用
----------------------------------------------------------------------------
把这个类库做好,你就懂了。我当初就是开发这个程序搞懂的委托和事件
当你开发程序引用外部dll的时候,dll里什么时候获取到数据是未知,只能通过抛出事件来实现
这就是事件和方法的最主要区别,方法是自己在代码里调用,代码运行到就执行,而事件啥时候运行,对于开发人员来说是不确定的
就像你编写了一个按钮点击事件,写了相应的代码
但这些代码什么时候执行,你确定不了,啥时候点按钮啥时候就执行
#7
我懂了这个逻辑,但是不太理解那语法丝的,能指点下吗
#8
你都理解了逻辑,语法还有什么可说的……
委托就是平时写的方法,加个delegate
事件跟委托的关系就仿佛属性和字段的关系
委托就是平时写的方法,加个delegate
事件跟委托的关系就仿佛属性和字段的关系
#9
委托是对方法的引用,可以引用多个方法,他其实是一个类,包含了线程间调用接口
事件是封装为属性的委托
事件是封装为属性的委托
#10
看着看着 似乎明白 又有点不明白,晕啊~
#11
我想说的是 事件的定义完了 我们怎么设置他的触发条件呢 求个例子
#12
你去超市购物,就是事件。我托你给我带包烟,就是委托!