What does var toUser = ConnectedUsers.FirstOrDefault(x =>
本文关键字:gt ConnectedUsers does var toUser What FirstOrDefault | 更新日期: 2023-09-27 18:35:46
我只是在看 SignalR 聊天应用程序,我不确定以下行是什么意思?
特别是"x =>"部分。
var toUser = ConnectedUsers.FirstOrDefault(x => x.ConnectionId == toUserId) ;
然后它检查变量并发送消息。
if (toUser != null && fromUser!=null)
{
"Send Message"
}
x => x.ConnectionId == toUserId
是一个lambda表达式。这是声明匿名委托或方法的一种非常简洁的方法。你可以这样写:
private bool SelectUser(User x)
{
return x.ConnectionId == toUserId; // Where toUserId has to be a field.
}
使用此声明,您可以编写:
User toUser = ConnectedUsers.FirstOrDefault(SelectUser);
请注意,SelectUser
后没有大括号()
,因为我们不想在这里调用该方法;我们将其作为委托传递。可以将其视为一种方法指针。
另请注意,C# 会自动捕获 lambda 表达式中的变量toUserId
,并使其作为字段对 lambda 表达式可见。这称为闭包。
扩展方法FirstOrDefault
返回连接 ID 匹配的ConnectedUsers
枚举中的第一个用户,如果未找到此类用户,则返回null
(因此以下if (toUser != null ...)
检查)。
var toUser = ConnectedUsers.FirstOrDefault(x => x.ConnectionId == toUserId) ;
返回第一个 ConnectionId 属性等于 "toUserId" 变量中的值的用户,并将其放入 toUser。如果没有匹配的用户,toUserId 将等于 null。
阅读 http://msdn.microsoft.com/en-us/library/vstudio/bb340482%28v=vs.90%29.aspx 了解更多详情
关于
if (toUser != null && fromUser!=null) { "Send Message" }
我发现它是如此简单,以至于我什至不知道该回答什么。如果您无法阅读它,很抱歉,但您在错误的网站上。当你提供它时,它不会做任何事情来坦率地说:它不会编译。所以请发布一个真实的问题