以下两者之间是否有任何区别(性能方面(:
public User GetUser1()
{
var user = _database.User.First();
return user;
}
public User GetUser2()
return _database.User.First();
}
下面是 LINQPad for C# 7.0 从我的数据库上的相同函数输出:
GetUser1:
IL_0000: ldarg.0
IL_0001: call LINQPad.User.TypedDataContext.get_Users
IL_0006: call System.Linq.Queryable.First<User>
IL_000B: ret
GetUser2:
IL_0000: ldarg.0
IL_0001: call LINQPad.User.TypedDataContext.get_Users
IL_0006: call System.Linq.Queryable.First<User>
IL_000B: ret
这是关闭优化的输出。 请注意,NOP
s 和BR.S
用于调试/断点目的。
GetUser1:
IL_0000: nop
IL_0001: ldarg.0
IL_0002: call LINQPad.User.TypedDataContext.get_Users
IL_0007: call System.Linq.Queryable.First<User>
IL_000C: stloc.0 // user
IL_000D: ldloc.0 // user
IL_000E: stloc.1
IL_000F: br.s IL_0011
IL_0011: ldloc.1
IL_0012: ret
GetUser2:
IL_0000: nop
IL_0001: ldarg.0
IL_0002: call LINQPad.User.TypedDataContext.get_Users
IL_0007: call System.Linq.Queryable.First<User>
IL_000C: stloc.0
IL_000D: br.s IL_000F
IL_000F: ldloc.0
IL_0010: ret