我正在尝试修改this example以满足我的需求,但特别是有一条线让我难过。聊天服务器中的((Action<List<MessageInfo>>)parm)(msgs);
行对我来说毫无意义。我可以看到它对类型((Action<List<MessageInfo>>)parm);
进行了类型转换(msgs),但它似乎根本没有做任何事情。
我希望有人可以帮助我理解这一点,因为我觉得这是我在这个难题中遗失的最后一件......
亲切的问候。
答案 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)
他们说的是:
考虑一下:
parm
是Action
将List
的{{1}}
由于<MessageInfo>
是可执行的,因此执行它,
传递Action
作为参数。