gpt4 book ai didi

c# - 这两种说法是同一回事吗?

转载 作者:行者123 更新时间:2023-11-30 13:41:41 26 4
gpt4 key购买 nike

以下两个语句是否会做完全相同的事情,包括延迟绑定(bind)等副作用?

Ilist<SomeClass> sessions = SomeFunction()
var tmp = from session in sessions
select new ConnectedUsers()
{
ID = session.SessionId,
Username = session.UserName,
HostName = session.ClientName,
IpAddress = session.ClientIPAddress.ToString()
};
var tmp2 = sessions.Select((session) => new ConnectedUsers()
{
ID = session.SessionId,
Username = session.UserName,
HostName = session.ClientName,
IpAddress = session.ClientIPAddress.ToString()
});

编辑:如果我使用第一种语法或第二种语法,类似的语句是否会相同

最佳答案

编译器会在编译过程中将第一种方法转化为第二种方法。

但是,如果您使用普通的 select 子句创建一个非普通的查询表达式,则不会发出 Select 调用。
因此,以下每一对表达式都将以相同的方式编译:

from x in Enumerable.Range(0,1000) where x / 2 == x / 2.0 select x
Enumerable.Range(0,1000).Where(x => x / 2 == x / 2.0) //No Select call

from x in Enumerable.Range(0,1000) select x
Enumerable.Range(0,1000).Select(x => x)

关于c# - 这两种说法是同一回事吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4740641/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com