c#中的委托和c++中的bind/function对比

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#中的委托和c++中的bind/function对比相关的知识,希望对你有一定的参考价值。

在c++中,如果要实现这样一个功能,比如定时器,在指定的时间执行指定的函数,接口可以采用如下的设计

uint64_t addtimer(uint64_t t, std::function<void(uint64_t)>);

在实现上可以采用如下的方式

std::map<uint64_t, std::function<void(uint64_t)> > _timetimer;

这样即可将需要在将来执行的函数保存在一个map中,然后在时间到达之后调用。
用户使用这样的一组接口的方式可以是

void testtime(uint64_t tick)
{
    //do anything
}

addtimer(time, testtime);

而在c#中实现相同的功能则采用的是委托

public delegate void tickHandle(Int64 tick);

public void addticktime(Int64 process, tickHandle handle)
{
        tickHandledict.Add(process, handle);
}

private Dictionary<Int64, tickHandle> tickHandledict;

用户调用时,采用如下代码即可

class test
{
    public void ontime(Int64 tick)
    {
        //do anything
    }
}

test _test = new test();
addticktime(time, _test.ontime);

abelkhan技术论坛:http://abelkhan.com/forum.php

以上是关于c#中的委托和c++中的bind/function对比的主要内容,如果未能解决你的问题,请参考以下文章

C#委托(delegateActionFuncpredicate)和事件

C# 学习笔记 6.委托

c#之委托详解

C# 委托(Delegate)

C#委托-Delegate

c#中委托的作用是啥?