理解一行示例代码

时间:2011-09-05 14:21:07

标签: c# asp.net-mvc-3 comet long-polling

我正在尝试修改this example以满足我的需求,但特别是有一条线让我难过。聊天服务器中的((Action<List<MessageInfo>>)parm)(msgs);行对我来说毫无意义。我可以看到它对类型((Action<List<MessageInfo>>)parm);进行了类型转换(msgs),但它似乎根本没有做任何事情。

我希望有人可以帮助我理解这一点,因为我觉得这是我在这个难题中遗失的最后一件......

亲切的问候。

3 个答案:

答案 0 :(得分:5)

他们正在投射delegate,然后使用msgs调用它。

这一位:

((Action<List<MessageInfo>>)parm);

投射代表。然后它使用msgs调用委托。

稍微分解一下:

Action<List<MessageInfo>> del = ((Action<List<MessageInfo>>)parm);
del(msgs);

作者只是选择将所有内容合并为一行。

答案 1 :(得分:3)

该行

((Action<List<MessageInfo>>)parm)(msgs)

不是简单的强制转换,它是一个强制转换,然后是方法的调用。基本上它是这样做的:

Action<List<MessageInfo>> action = (Action<List<MessageInfo>>)parm;
action(msgs);

答案 2 :(得分:0)

他们说的是:

考虑一下:

parmAction

List的{​​{1}}

作为参数

由于<MessageInfo>是可执行的,因此执行它,

传递Action作为参数。