我正在尝试根据自己的需要修改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);
作者只是选择将所有这些折叠成一行。