热门手机游戏秘籍攻略应用教程大全

本文重要引见了C#中的托付、事宜与异步的相干学问。具有很好的参考价值。下面随着小编一起来看下吧

从刚打仗c#编程到现在,差不多快有一年的时候了。在进修过程当中,有许多处所一直貌同实异,直到近来才弄邃晓。

本文将先引见用法,后评议功用。

一、托付

基础用法:

1.声明一个托付范例。托付就像是‘类'一样,声清楚明了一种托付以后就能够建立多个具有此种特性的托付。(特性,指的是返回值、参数范例)

public delegate void SomeKindOfDelegate(string result);

2.建立一个在1中建立的托付范例的托付。

public SomeKindOfDelegate aDelegate;

3.为2中建立的细致的托付增加响应函数。响应函数必需相符1中的‘特性'。

aDelegate +=new SomeKindOfDelegate(aFunctionThatJustForDelegate);
private void aFunctionThatJustForDelegate(string result)
{
MessageBox.Show(result);
}

4.完成以上三步以后,就能够运用Invoke来对托付举行挪用了。Invoke能够挑选挪用的目的函数,挪用优先级,以及挪用的参数。

aDelegate.BeginInvoke("Hello~I'm being invoked!", null, null);

上面是基础用法,除了这类基础用法以外,还能够连系var、匿名托付、lambda托付等要领。

完全代码:

namespace wtfIsDelegate
{
 public delegate void SomeKindOfDelegate(string result);
 public partial class Form1 : Form
 {
  public event SomeKindOfDelegate aDelegate;
  public Form1()
  {
   InitializeComponent();
   aDelegate +=new SomeKindOfDelegate(aFunctionThatJustForDelegate);
   aDelegate.BeginInvoke("Hello~I'm being invoked!", null, null);
  }
  private void btnDelegate_Click(object sender, EventArgs e)
  {
  }
  private void aFunctionThatJustForDelegate(string result)
  {
   MessageBox.Show(result);
  }
 }
}

托付的用途:

托付的长处,是能够完成异步(BeginInvoke),还能够在某种须要同时挪用多个同参数、返回值的情况下简化代码。

二、事宜

基础用法:

1.定义托付。

public delegate void SomeKindOfDelegate(string result);

2.定义事宜。

public event SomeKindOfDelegate aDelegate;

3.为事宜增加响应函数。

process.Exited += new EventHandler(CmdProcess_Exited);

4.为事宜划定触发(挪用)体式格局。(【也能够没有触发体式格局,直接invoke】)

说明注解:

C#里,每一种‘事宜Event'也许都对应着其‘事宜处置惩罚者EventHandler'。比方Process类的OutputDataReceived事宜对应着DataReceivedEventHandler,关于非特异性的‘事宜',比方PasswordChanged 这类,它们一致都对应着RoutedEventHandler或许EventHandler这类较为通用的‘事宜处置惩罚者'。但是,‘EventHandler'也只是充当了一个中介的角色,真正触发了‘Event'以后要做什么,还须要我们手动指定,像如许:

process.Exited += new EventHandler(CmdProcess_Exited); // 注册历程完毕事宜 。

EventHandler原本也是托付。比方

public delegate void DataReceivedEventHandler(object sender, DataReceivedEventArgs e);

自定义事宜

自定义事宜是一种相似于托付的体式格局,

自定义事宜某种意义上改变了顺序的流程,使得某个前提的变化由‘不停查询'转变为‘定阅与处置惩罚'的关联。

自定义事宜须要有以下几个元素:

事宜的提议者,事宜的定阅,以及事宜的处置惩罚顺序。从提议者到处置惩罚顺序之间是能够传参数的。

一个事宜的‘提议'能够依赖于某种体系音讯,比方‘OnKeyDown'、‘OnMouseClick'(【我现在还没见过这么写的源码】),也能够在某个前提杀青时(比方两次输入了一样的字符)自行挪用(实在收到体系音讯也算是‘前提杀青')。【更多的event是这么写出来的】

有些事宜,并没有显著的‘提议者'。

托付和事宜是啥关联

托付和自定义事宜的运用体式格局非常非常相似。event 只要类的内部能够 Invoke,delegate的话,在哪都能够Invoke。挪用的体式格局貌似也略有区分(传参体式格局)

因为挪用体式格局和传参的差别,event显得更保守/稳固一些。event也更轻易从‘明白'上更轻易接受。

delegate貌似更多的用于举行异步(begin invoke)。而event则更多的用来做自定义事宜。

托付和异步是啥关联

异步是托付能够完成的一种功用(或许叫做‘征象'也能够) 异步能够由许多种其他体式格局表现,比方多线程(thread,threadpool,task等等)。

以上就是简朴引见C#中的托付,事宜与异步的用法的细致内容,更多请关注ki4网别的相干文章!

赞(0) 打赏

上一篇:

下一篇:

相关推荐

0 条评论关于"简朴引见C#中的托付,事宜与异步的用法【C#.Net教程】,C#,委托,事件,异步"

表情

最新评论

    暂无留言哦~~

支付宝扫一扫打赏

微信扫一扫打赏


Warning: error_log(/www/wwwroot/soxunxi.cn/wp-content/plugins/spider-analyser/#log/log-0918.txt): failed to open stream: No such file or directory in /www/wwwroot/soxunxi.cn/wp-content/plugins/spider-analyser/spider.class.php on line 2900