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对比的主要内容,如果未能解决你的问题,请参考以下文章