我正在尝试根据自己的需要修改this example,但是特别是一行让我感到困惑。聊天服务器中的((Action<List<MessageInfo>>)parm)(msgs);行对我来说绝对没有意义。我可以看到它将类型转换(msgs)转换为((Action<List<MessageInfo>>)parm);类型,但是它似乎根本不执行任何操作。

我希望有人能帮助我理解这一点,因为我感觉到它是我遗漏的这个难题的最后一部分...

亲切的问候。

最佳答案

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

这一点:

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


强制委托。然后,它使用msgs调用委托。

分解一下:

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


作者只是选择将所有这些折叠成一行。

09-25 18:06